IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子 -> 正文阅读

[数据结构与算法]Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

  1. cin >> n;

  2. while(n--)

  3. {

  4. cin >> t;

  5. price[t] = 1;

  6. }

  7. t = 0;

  8. for(int i = 0; i < 1000; i++)

  9. {

  10. if(price[t] && syn < 3) syn++;

  11. if(syn == 3) break;

  12. t++;

  13. }

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

  15. }

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);

  47. //两个点之间的距离 即被多次计算待会需要减掉的距离

  48. int

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

  50. int

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

  52. repetition += twoPointDistance;

  53. sum += threePointDistance;

  54. last = twoPointDistance;

  55. if(contrast > optimizeDistance)

  56. {

  57. optimizeDistance = contrast;

  58. select = threePointDistance;

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

  60. }

  61. }

  62. System.

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

  64. }

  65. }

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

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

解答:

dp[i][j] = (dp[i - 1][j - 1] * (i - j) + dp[i - 1][j] * (j + 1)) % 2017;

dp[i][j]表示有 i 个数字及 j 个小于号所能组成的数量(大于号数量当然是 i - j - 1 次,后面需要使用)

而加入第 i + 1 个数字时,分以下四种情况:

  1. 如果将 i+1 插入当前序列的开头,即有了 1<2,加入后成为 3>1<2,会发现等于同时加入了一个大于号!(此时可以无视 1 与 2 之间的关系,因为 i+1>i)

  2. 如果将 i+1 插入当前序列末尾,即 1<2 变成了 1<2<3,会发现等于同时加入了一个小于号!(此时可以无视 1 与 2 之间的关系,因为 i+1>i)

  3. 如果将i+1加入一个小于号之间,即已经有 1<2了,向中间加入3,会发现变成了1<3>2,等于同时加入了一个大于号!

  4. 如果将 i+1 加入一个大于号中间,即有了 2>1,变成了 2<3>1,等于同时加入了一个小于号!

综上所述,dp[i][j]等于以上四种情况之和:

dp[i - 1][j]?将 i 加在开头等于加入一个大于号,即要求 i-1 个数时已经有了 j 个小于号;

dp[i - 1][j - 1]?将 i 加在末尾等于加入一个小于号,即要求 i-1 个数时已经有了 j-1 个小于号;

dp[i - 1][j] * j?将 i 加在任意一个小于号之间,等于加入了一个大于号,即要求 i-1 个数时已经有了 j 个小于号,每个小于号都可以进行这样的一次插入;

dp[i - 1][j - 1] * (i- j - 1)?将 i 加载任意一个大于号之间,等于加入了一个小于号,即要求i-1 个数时有了 j-1 个小于号;

而此时共有(i - 1) - (j - 1)- 1 个大于号,每个大于号都要进行一次这样的操作合并同类项即为dp[i][j] = (dp[i - 1][j - 1] * (i - j) + dp[i - 1][j] * (j + 1))。

最后要记得取模。

由于篇幅原因,我就不一一给大家展示了,需要这套算法面试题的可以跳到文章末尾哦!

于是,我被老大叫去办公室喝茶,然后,就离职了…

OS:你TM裁员就裁员,突击测试算怎么回事?


算法课程的具体内容:

Java.png
算法面试题的可以跳到文章末尾哦!

于是,我被老大叫去办公室喝茶,然后,就离职了…

OS:你TM裁员就裁员,突击测试算怎么回事?


算法课程的具体内容:

[外链图片转存中…(img-7hslomnJ-1635177534729)]

[外链图片转存中…(img-DDogA2Oi-1635177534730)]

[外链图片转存中…(img-CyR4HPX3-1635177534731)]

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:25:59  更:2021-10-26 12:26:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:23:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码