← 返回目录

其他算法

第 28 / 42 卷日期:

4、堆排序

因为每次的堆顶元素是当前序列的最值,所以可以理解为优先队列,然后可以和类似任务处理、topK问题、贪心里面的区间问题和霍夫曼树、Prim算法生成最小生成树、Dijkstra算法的优化

其他算法

经典面试算法

1. 如何仅用递归函数和栈操作逆序一个栈

1、题目要求

一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为 1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构;

2、解答

想要不使用别的数据结构完成栈的反转,就必须借助递归函数的返回值来实现这些操作。首先一个递归要深入栈中,取得并移除栈底元素,但是不应该改变除了栈底外的其他元素的顺序。;第二个递归是要将取出的元素按要求

再放入栈中,push操作要在递归返回后再push。也就完成了要求;

3、总结

对于容器来说,想要改变元素的顺序,同时不适用额外的数据结构,可以借助递归函数的返回值来合理的安排你想要的操作。

2. 猫狗队列

1、题目要求:

实现一种狗猫队列的结构,可以完成add,pollall,polldog,pollcat等操作;

2、解答:

本题考查实现特殊数据结构的能力以及针对特殊功能的算法设计能力,略过。

3. 打印两个有序链表的公共部分

1、题目要求:

给定两个有序链表的头指针head1和head2,打印两个链表的公共部分;

2、解答:

循环比较两个指针的数值,两个指针都不能为空,小的推进,相等就记录并两个指针都推进。

全站分卷索引 · 42 卷
  1. 1代码随想录知识星球精华(最强八股文)第五版(算法篇)
  2. 2找出所有子集的异或总和再求和
  3. 3哈希表
  4. 4哈希冲突
  5. 5红黑树与AVL树
  6. 6平衡二叉树(AVL树)
  7. 7将有序数组转换为二叉搜索树
  8. 83. 分割(组合问题)
  9. 9方法论
  10. 10509. 斐波那契数
  11. 1162. 不同路径
  12. 1296. 不同的二叉搜索树
  13. 13322. 零钱兑换
  14. 14爬楼梯
  15. 15背包小总结 (01背包、完全背包)
  16. 16子序列问题
  17. 17674. 最长连续递增序列
  18. 18115. 不同的子序列
  19. 19总结
  20. 20技巧总结
  21. 21时间序列模型
  22. 22区间DP模型
  23. 23664. 奇怪的打印机
  24. 24编辑距离
  25. 25回文串
  26. 26DP递推公式总结
  27. 27排序算法
  28. 28其他算法
  29. 294. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历
  30. 302. TOP N问题
  31. 313. 分布式的TOP N问题
  32. 322. Astar数据结构 + 公式
  33. 334. 代码实现
  34. 345. 总体代码
  35. 35堆排序
  36. 36单源最短路
  37. 37思维导图
  38. 38链表
  39. 39回溯
  40. 40贪心
  41. 41动态规划
  42. 42排序