首先强调一点,数据结构和算法其实和语言没有太大关系,编程语言只是我们实现算法的工具。这里我为你整理了一份常见的你可以尝试去实现的算法清单:
链表类题目:
1. O(1)时间删除链表节点
2. 链表反转
3. 旋转单链表
4. 查到倒数第K个链表节点
5. 求链表的中间节点
6. 划分链表使得所有小于x的节点排在大于等于x的节点之前
7. 合并有序链表
8. 删除链表中的重复节点
9. 判断单链表是否有环(快慢指针)
10. 判断两个无环链表是否相交
排序算法:
1. 快速排序
2. 插入排序算法
3.选择排序
4.堆排序
5.希尔排序
6.基数排序
7.冒泡排序
8.归并排序
9.二叉树排序
10.计数排序
11.桶排序
二叉树:
1. 计算二叉树节点个数
2. 求树的最大层数(深度)
3. 最小深度
4. 二叉树的前序遍历(递归算法)
5. 二叉树非递归前序遍历
6. 二叉树中序遍历(递归)
7. 二叉树中序遍历非递归
8. 后续遍历
9. 非递归后序遍历二叉树
10. 自下而上分层遍历
11. 从上而下层次打印
12. 求第层节点个数
13. 求第层的叶子节点个数
14. 两颗二叉树是否结构相同
15. 判断是否是平衡二叉树
16. 判断是否是对称二叉树
17. 求二叉树的最低公共祖先
18. 求二叉树的长度或者直径(疑问)·
19. 路径总和II
20. 求根到叶子节点数字之和
当这些基础算法都掌握了,这个时候再去分析JDK里面用到的各种数据结构或者算法,比如说Collections类的sort是采用的什么排序方式(不止一种额,分情况有好几种);然后再尝试去分心JDK里面各种数据结构的使用场景,比如说红黑树、队列、堆栈、跳跃表之类的;最后,再去思考或者总结各种算法与数据结构最适用的场景。如果这些你都很清楚了,那么我相信你的是算法与数据结构肯定已经学的很好了。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/7059.html