Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子(1)

  1. if(syn == 3) break;

  2. t++;

  3. }

  4. syn == 3 ? cout << t : cout << -1;

  5. }

2、一个数轴上共有 N 个点,第一个点的坐标是度度熊现在位置,第 N-1 个点是度度熊的家。现在他需要依次的从 0 号坐标走到 N-1 号坐标。

但是除了 0 号坐标和 N-1 号坐标,他可以在其余的 N-2 个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?

解答:

从 N-2 个坐标中选出一个点,并直接将这个点忽略掉。直接忽略一个点只会直接影响到,这个节点前后节点的距离。这个 影响的距离我们暂且命名为优化距离,将所有节点按顺序组成三个节点的集合,通过这种方式只需要通过一次循环便能得到结果。

优化距离越大说明如果去掉这个集合的中点元素将会使得总距离越短,下面上代码。

  1. import

  2. java.util.

  3. Scanner;

  4. publicclass

  5. Main

  6. {

  7. publicstaticvoid

  8. main(String[] args)

  9. {

  10. Scanner

  11. scanner = new

  12. Scanner(System.in);

  13. int

  14. length = scanner.nextInt();

  15. int[] arrays = newint[length];

  16. for(int i = 0; i < length; i++)

  17. {

  18. arrays[i] = scanner.nextInt();

  19. }

  20. /**

  21. * sum 总距离

  22. * repetition 三个节点 中被重复计算的总距离

  23. * select 优化距离最大的 三个节点两两相加的距离

  24. * add 三个结尾距离为 max 中 头尾节点的距离

  25. * last 最后三个节点中 尾距离没有被计算两次 需要加上

  26. * optimizeDistance 优化距离

  27. */

  28. int

  29. sum = 0,

  30. int

  31. repetition = 0,

  32. intselect = 0,

  33. int

  34. add = 0,

  35. intlast = 0,

  36. int

  37. optimizeDistance = 0;

  38. for(int i = 0; i <= (arrays.length - 3); i++)

  39. {

  40. intbegin = arrays[i];

  41. int

  42. mid = arrays[i + 1];

  43. intend = arrays[i + 2];

  44. //三个点之间的距离

  45. int

  46. threePointDistance = Math.abs(mid - begin) + Math.abs(end - mid);

Java开源项目【ali1024.coding.net/public/P7/Java/git】 54. //两个点之间的距离 即被多次计算待会需要减掉的距离

  1. int

  2. twoPointDistance = Math.abs(end - mid);

  3. int

  4. contrast = threePointDistance - Math.abs(begin - end);

  5. repetition += twoPointDistance;

  6. sum += threePointDistance;

  7. last = twoPointDistance;

  8. if(contrast > o **《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源** ptimizeDistance)

  9. {

  10. optimizeDistance = contrast;

  11. select = threePointDistance;

  12. add = Math.abs(end - begin);

  13. }

  14. }

  15. System.

  16. out.println((sum - select + last) - repetition + add);

  17. }

  18. }

3、度度熊最近对全排列特别感兴趣,对于 1 到 n 的一个排列,度度熊发现可以在中间根据大小关系插入合适的大于和小于符号(即 ‘>’ 和 ‘<’ )使其成为一个合法的不等式数列。

但是现在度度熊手中只有 k 个小于符号即(‘<’‘)和 n-k-1 个大于符号(即’>'),度度熊想知道对于 1 至n 任意的排列中有多少个排列可以使用这些符号使其为合法的不等式数列。

解答:

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

想知道对于 1 至n 任意的排列中有多少个排列可以使用这些符号使其为合法的不等式数列。

解答:

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

[外链图片转存中…(img-pQfTXfjR-1650435546868)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值