Java岗开发3年公司临时抽查算法离职后这几题我记一辈子_第1页
Java岗开发3年公司临时抽查算法离职后这几题我记一辈子_第2页
Java岗开发3年公司临时抽查算法离职后这几题我记一辈子_第3页
Java岗开发3年公司临时抽查算法离职后这几题我记一辈子_第4页
Java岗开发3年公司临时抽查算法离职后这几题我记一辈子_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java岗开发3年公司临时抽查算法离职后这几题我记一辈子 Java 岗开发 3 年,公司临时抽查算法,离职后这几题我记一辈子 前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙蓬松的头发” “WC,见证历史,今年高考推迟了一个月,当年我要是碰上这种事,我岂不分分钟985?” 同

2、事: 同事:“这就是你考不上本科的原因?” 我: 我:“呃” “WC,阿水水这是要去滔博吗?” 同事: 同事:“这跟你考不上本科有什么关系?” 我: 我:“喂喂?” 这时,一位从没见过的中年地中海出现在我的视线里:“各位,注意一下,为了考察大家的编程能力,5 分钟之后有一场测试,把自己的代码保存好后,到大会议室集合。” . 同事甲: 同事甲:“这不是总部来的技术总监吗?” 同事乙: 同事乙:“WC,第一次看到大佬。” 我: 我:“你们难道没有听到要测试吗?” . 后来,我们就不明不白的进行了一场测试,当我一片空白的试卷交上去,把一片空白的脑子带出来,听着同事们谈论着测试答案。 同事告诉我,这份

3、算法题百度,并给了我一份文件。 文件具体内容如下: 1 、度度熊想去商场买一顶帽子,商场里有 N 顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 输入描述 输入描述: 首先输入一个正整数 N(N n; while(n-) cint; pricet=1; t=0; for(int i=0;it:cout-1; 2 、一个数轴上共有 N 个点,第一个点的坐标是度度熊现在位置,第 N-1 个点是度度熊的家。现在他需要依次的从 0 号坐标走到 N-1 号坐标。 号坐标。 但是除了 0 号坐标

4、和 N-1 号坐标,他可以在其余的 N-2 个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 直接将这个点忽略掉,问度度熊回家至少走多少距离? 解答: 解答: 从 N-2 个坐标中选出一个点,并直接将这个点忽略掉。直接忽略一个点只会 只会直接影响到,这个节点前后节点的距离。这个 影响的距离我们暂且命名为优化距离,将所有节点按顺序组成三个节点的集合,通过这种方式只需要通过一次循环便能得到结果。 优化距离越大说明如果去掉这个集合的中点元素将会使得总距离越短,下面上代码。 码。 import java.util.Scanner; public class Main public

5、 static void main(String args) Scanner scanner = new Scanner(System.in); int length = scanner.nextInt(); int arrays = new intlength; for (int i = 0; i length; i+) arraysi = scanner.nextInt(); /* * sum 总距离 * repetition 三个节点 中被重复计算的总距离 * select 优化距离最大的 三个节点两两相加的距离 * add 三个结尾距离为 max 中 头尾节点的距离 * last 最后

6、三个节点中 尾距离没有被计算两次 需要加上 * optimizeDistance 优化距离 */ int sum = 0,int repetition = 0,int select = 0,int add = 0,int last = 0,int optimizeDistance = 0; for (int i = 0; i optimizeDistance) optimizeDistance = contrast; select = threePointDistance; add = Math.abs(end - begin); System.out.println(sum - select

7、 + last) - repetition + add); 3 、度度熊最近对全排列特别感兴趣, 对于 1 到 n 的一个排列, 度度熊发现可以在中间根据大小关系插入合适的大于和小于符号( 即 和 ) 使其成为一个合法的不等式数列。 等式数列。 但是现在度度熊手中只有 k 个小 于符号即(), 度度熊想知道对于 1 至 至 n 任意的排列中有多少个排列可以使用这些符号使其为合法的不等式数列。 等式数列。 解答: 解答: dpij = (dpi - 1j - 1 * (i - j) + dpi - 1j * (j + 1) % xx; dpij表示有 i 个数字及 j 个小于号所能组成的数量(大

8、于号数量当然是 i - j - 1 次,后面需要使用) 而加入第 i + 1 个数字时,分以下四种情况: 1. 如果将 i+1 插入当前序列的开头,即有了 11i) 2. 如果将 i+1 插入当前序列末尾,即 11,变成了 21,等于同时加入了一个小于号! 综上所述,dpij等于以上四种情况之和: dpi - 1j 将 i 加在开头等于加入一个大于号,即要求 i-1 个数时已经有了 j 个小于号; dpi - 1j - 1 将 i 加在末尾等于加入一个小于号,即要求 i-1 个数时已经有了 j-1 个小于号; dpi - 1j * j 将 i 加在任意一个小于号之间,等于加入了一个大于号,即要

9、求 i-1 个数时已经有了 j 个小于号,每个小于号都可以进行这样的一次插入; dpi - 1j - 1 * (i- j - 1) 将 i 加载任意一个大于号之间,等于加入了一个小于号,即要求 i-1 个数时有了 j-1 个小于号; 而此时共有(i - 1) - (j - 1)- 1 个大于号,每个大于号都要进行一次这样的操作合并同类项即为 dpij = (dpi - 1j - 1 * (i - j) + dpi - 1j * (j + 1)。 最后要记得取模。 . 由于篇幅原因,我就不一一给大家展示了,需要文件的朋友可以来私信我。 由于在准备面试,以前收集的 Java 进阶宝典Java 核心知识点.pdf,全文覆盖了 JVM、锁、高并发、反射、mybatis、Spring 原理、微服务、Zookeeper、数据库、数据结构等等内容, 获取方式: 评论区获取! 于是,我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论