
算法
JackieeeCheng
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java面试算法题总结
java面试笔试算法题转载 2017-05-18 15:43:47 · 1402 阅读 · 0 评论 -
100亿数据找出最大的1000个数字
100亿数据找出最大的1000个数字原创 2017-05-18 22:04:58 · 9260 阅读 · 0 评论 -
单链表的删除算法时间复杂度O(1)和O(n)
平时我们在计算单链表的第i个节点删除时间复杂度时一般认为是O(n),过程如下1.先从头节点开始遍历链表,找到第i-1个节点2.将第i-1节点next指向第i个节点的next可以看到时间主要花在了遍历链表上如果我们已经拿到了要删除的第i个节点Node(i),就不需要进行遍历操作和查找前驱节点了,直接拿Node(i+1)来覆盖Node(i)即可。具体的做法如下:1.No原创 2017-05-19 21:28:32 · 20760 阅读 · 2 评论 -
求一个数组(a(i,j))中元素相减的最大值,且i<=j
题目的要求是时间复杂度O(n),空间复杂度O(1).两个错误的思路要避免,一是数组排序,最好的排序算法时间复杂度也是nlogn,明显达不到要求。另外一个是遍历数组求得最大值和最小值,然后相减,但照顾不到i正确的思路是对上述第二个算法的改进,将数组第一个元素设置为最大和最小值(i=j=0),最大差值的初始值max就是0,然后移动j,每次移动都计算a[j]-a[i],如果结果大于max就替换m原创 2017-05-21 10:52:14 · 2116 阅读 · 0 评论 -
三色旗(荷兰旗)排序算法分析
三色旗问题又叫荷兰旗问题,前提是有一个无序的char数组,里面的元素只能是{‘R’,'G','B'}中的一个,比如{'B','R','G','R','B','B','G','B','R'},现在要求不允许借助额外的空间,即只能通过自身元素交换的方法将数组重排序,最终达到RGB顺序排序,比如例子中的数组排序后变为:RRRGGBBBB。算法分析:分别定义三个指针,rindex, gindex,原创 2017-05-21 17:10:39 · 3522 阅读 · 1 评论