综述:其中两道算法+一道mysql题目【没合适的,投递了测开,哈哈哈】全A

算法1

数组中的逆序对【剑指Offer 51. 数组中的逆序对】

题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。

思路:按照归并排序的思想去处理;

「归并排序」与「逆序对」是息息相关的。归并排序体现了 “分而治之” 的算法思想,具体为:

分: 不断将数组从中点位置划分开(即二分法),将整个数组的排序问题转化为子数组的排序问题;
        治: 划分到子数组长度为 1 时,开始向上合并,不断将 较短排序数组 合并为 较长排序数组,直至合并至原数组时完成排序;

合并阶段 本质上是 合并两个排序数组 的过程,而每当遇到 左子数组当前元素 > 右子数组当前元素 时,意味着 「左子数组当前元素 至 末尾元素」 与 「右子数组当前元素」 构成了若干 「逆序对」

下面是一个数组归并排序的示例:

class Solution {int[] nums, tmp;public int reversePairs(int[] nums) {this.nums = nums;tmp = new int[nums.length];return mergeSort(0, nums.length - 1);}private int mergeSort(int l, int r) {// 终止条件if (l >= r) return 0;// 递归划分int m = (l + r) / 2;int res = mergeSort(l, m) + mergeSort(m + 1, r);// 合并阶段int i = l, j = m + 1;for (int k = l; k <= r; k++)tmp[k] = nums[k];for (int k = l; k <= r; k++) {if (i == m + 1)nums[k] = tmp[j++];else if (j == r + 1 || tmp[i] <= tmp[j])nums[k] = tmp[i++];else {nums[k] = tmp[j++];res += m - i + 1; // 统计逆序对}}return res;}
}

问题2

问题描述:

有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点权值最小的叶节点距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。

思路 来源

思路1:典型的二进制编码题,算出叶子节点二进制编码,再比编码,计算后缀长度和

思路2:先找到最大最小节点位置,在找出最近的公共祖先,在分别计算到公共祖先的距离,在求和,虽然麻烦,但很通俗易懂

代码1

//典型的二进制编码题,算出叶子节点二进制编码,再比编码,计算后缀长度和
import java.util.*;/*
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}
}*/public class Tree {private int max=0;private int min=99999;private StringBuilder maxcodec;private StringBuilder mincodec;void PreOrder(TreeNode T,char code,StringBuilder codec){if(T!=null){           codec.append(code);if(T.left==null && T.right==null){if(max<T.val){max=T.val;maxcodec = codec;}if(min>T.val){min=T.val;mincodec = codec;}}PreOrder(T.left,'0',new StringBuilder(codec));PreOrder(T.right,'1',new StringBuilder(codec));}}public int getDis(TreeNode root) {PreOrder(root,'0',new StringBuilder());int index=0;for(index=0; index<(maxcodec.length()>mincodec.length()?maxcodec.length():mincodec.length());index++){if(maxcodec.charAt(index)!=mincodec.charAt(index))break;}return (maxcodec.substring(index).length()+mincodec.substring(index).length());// write code here}
}

代码2


import java.util.*;
/*public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}*/public class Tree {private TreeNode maxNode = new TreeNode(Integer.MIN_VALUE);private TreeNode minNode = new TreeNode(Integer.MAX_VALUE);public int getDis(TreeNode root) {// write code heregetMaxMin(root);//找到最大最小叶子节点TreeNode lcaNode = getLCA(root);//找LCAint a = getNodeDis(lcaNode, maxNode);//最大值叶子节点到LCA的距离;int b = getNodeDis(lcaNode, minNode);//最小值叶子节点到LCA的距离;return a+b;}// 先找到最大最小叶子节点public void getMaxMin(TreeNode root) {if (root == null) {return;}if (root.left == null && root.right == null) {if (root.val > maxNode.val) {maxNode = root;} else if (root.val < minNode.val) {minNode = root;}}getMaxMin(root.left);getMaxMin(root.right);}// LCA最近公共祖先public TreeNode getLCA(TreeNode root) {if (root == null) {// 说明是空树return null;}if (root.val == maxNode.val || root.val == minNode.val) {// 在当前树的根节点上找到两个节点之一return root;}TreeNode leftNode = getLCA(root.left);// 左子树中的查找两个节点并返回查找结果TreeNode rightNode = getLCA(root.right);// 右子树中查找两个节点并返回查找结果if (leftNode == null) {// 左子树中没找到,则一定在右子树上return rightNode;} else if (rightNode == null) {// 右子树没找到一定在左子树上return leftNode;} else {// 左右子树均找到一个节点,则根节点为最近公共祖先return root;}}//获取叶子节点到LCA距离public int getNodeDis(TreeNode lcaNode, TreeNode node){if(lcaNode==null){return -1;}if(lcaNode.val==node.val){return 0;}//三种情况:两个均在左子树;两个均在右子树;一左一右,所以不能用if-elseif结构int distance = getNodeDis(lcaNode.left, node);//左子树未找到两个节点之一if(distance==-1){distance = getNodeDis(lcaNode.right, node);}if(distance!=-1){return distance+1;}return -1;}
}

20220828 华泰证券笔试相关推荐

  1. 招商银行信用卡中心华泰证券暑期实习软开笔试小结

    白菜自动化小硕一枚,18届,下学期就正式要找工作了,没有实习经验,感觉心慌慌.现在学校里已经开始各种提前招实习,内推了,so暑假想提前试试水,投一投暑期实习. 看到心水的单位就投一投,4月初收到了招商 ...

  2. 华泰证券软件开发工程师笔试经历

    记得不啥时候在华泰证券的网站上登记过自己的求职信息.星期四收到消息通知星期六早晨9点笔试,什么岗位也没有通知. 上网到处搜索华泰证券以往的笔试题目,只有两篇文章提到,一个说和公务员考试类似,另一个说是 ...

  3. 大数据开发方向分享:春招获蚂蚁金服、拼多多、华为(终端)、远景能源、华泰证券等offer

    大数据开发方向分享:春招获蚂蚁金服.拼多多.华为(终端).远景能源.华泰证券等offe 一.背景 2020届985硕士,投的基本是上海岗位,非科班转行大数据开发方向和Java后端开发. 参加了2020 ...

  4. 中信银行总行信息科技部笔试面试以及最后拿offer经历

    中信银行 提交简历 19年的招聘网站十分垃圾,提交只能用IE,感觉今年的招聘官网十分不错(ps:开发招聘官网的团队刚好去实习过一段时间,氛围不错,想了解的,可以介绍下的) 笔试 内容多,一般可能确实还 ...

  5. 经典笔试上机考题-表达式求值

    相信参加过笔试面试同学应当见到过表达式求值这道题,下面列举的一道经典的考题,本文将同大家一起细细探讨一下表达式求值这一类问题的求法,希望抛砖引玉,其中有不妥的地方也请大家多多批评指正. /* 功能:四 ...

  6. 2018年爱奇艺校招笔试

    我选的是前端方向,所以编程题的题目也比较简单,但是坑很多呀,不知道错在哪,最后没办法直接用最暴力的方法AC了. 笔试分为选择和编程,选择20个,每个三分,编程题两道每道20分. 选择题考点: 1.数据 ...

  7. 程序员笔试面试后上机_2021年国考笔试成绩查询后,面试准备阶段需要做好四方面...

    2021年国家公务员招录考试笔试成绩查询在1月份进行,一般都是在1月中上旬开始,在笔试成绩查询之后,进入面试的人员就要进行面试准备阶段. 2021年国家公务员招录什么时间进行面试?在2021年国家公务 ...

  8. 武汉理工大学计算机复试笔试重要吗,2017武汉理工计算机复试

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2017年4月1日愚人节对没错就是愚人节.计算机学院的官网上放出了拟录取名单.半年的长跑终于有了结果本人本科学的也不是计算机的,来自万金油管理学院的信管专 ...

  9. java ee 笔试题目,JSP经典笔试@题目(含答案)

    JSP经典笔试@题目(含答案) 更新时间:2017/2/5 19:25:00  浏览量:557  手机版 JSP综合测试笔试 1)在Java EE中,Servlet是在服务器端运行,以处理客户端请求而 ...

最新文章

  1. 2016年我国研究的超级计算机,盘点2016:我国科研取得的重大成果
  2. Buck开关电源拓扑结构分析
  3. java签到_实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?
  4. Mysql update 使用join更新字段
  5. 中英文对照 —— 游戏
  6. 【英语学习】【Level 07】U06 First Time L5 A Different City
  7. php是属于什么软件,.php是什么软件?
  8. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置
  9. MySQL 是怎么死锁的?
  10. 怎么把c盘的软件移到d盘?
  11. 计算两个经纬度点之间的距离
  12. 使用 k3d 在Windows上安装 k3s
  13. 电脑必备软件合集,实用工具推荐
  14. 移动终端安全 顶级会议_顶级移动应用开发公司
  15. ubuntu18 dso安装
  16. lisp角度转换弪度_角度和弧度换算(角度和弧度怎么换算)
  17. The GE Offer
  18. 7.26 2第5篇 无人驾驶带来巨大商机
  19. Win11解决修改壁纸自动切换成纯色
  20. 【网络通信】select、poll、epoll

热门文章

  1. EDI在服装行业的应用
  2. 15个常用的sql优化技巧
  3. 制作席慕蓉的诗html,席慕容最经典的诗歌(精选11首)
  4. VR 行业真的冷了吗
  5. REPLACE INTO
  6. publish_error
  7. 《数字短片创作(修订版)》——第2章 创造独特的角色、主题和视觉隐喻 创造强有力的人物角色...
  8. sudo groupadd mysql_Linux下安装独立MySQL
  9. ie11 反引号_如何去除IE11浏览器右上角的笑脸图标(反馈按钮)
  10. AI,大数据,机器学习三者概念的区分