(Version 0.0)这题是算法导论的书后习题,也是迄今为止LeetCode上面第二个我没想太长时间就直接放弃的题。第一个主动放弃的是Valid Number,那个题是因为嫌繁琐没什么太大意义,而这一个题则是感觉难度真的很大,如果之前没看过相关的东西的话自己做我觉得比AC Rate所体现的其实要...
分类:
其他好文 时间:
2015-03-10 10:14:17
阅读次数:
142
选择算法伪代码:forj=1ton-1
smallest=j
fori=j+1ton
ifA[i]<A[smallest]
smallest=i
A[j]=A[smallest]
循环不变式
在for循环(循环变量为j)的每次迭代开始,包含元素A[1..j-1]对的子数组都是排好序的(由数组[1..n]的j-1个最小元素组成)
循环终止的条件是就j>n-1,..
分类:
编程语言 时间:
2015-03-08 17:24:46
阅读次数:
205
二分查找伪代码:迭代Binary-Search(A,low,high,x)while(low<=high)
mid=(low+high)/2
if(A[mid]==x)
returnmid
elseif(A[mid]>x)
high=mid-1
else
low=mid+1
returnnull
二分查找伪代码:递归Binary-Search(A,low,high,x)
if(low>high)
returnnull
m..
分类:
编程语言 时间:
2015-03-08 17:24:45
阅读次数:
232
第一种:暴力枚举所有的子数组,然后比较选出最大,时间复杂度O(n^2)第二种:分治法,参见算法导论,时间复杂度O(nlogn)第三种:动态规划,时间复杂度O(n)1、A[1..j+1]的最大子数组为:max{A[1..j] , A[i,j+1](10?A[j+1]+K[j]:A[j+1](以A[j+...
分类:
编程语言 时间:
2015-03-08 15:37:45
阅读次数:
156
最近准备花时间把算法导论详细的看一遍,强化一下算法和数据结构的基础,将一些总结性的东西写到博客上去。一.插入排序
算法思想:如果一个数组A,从A[1–n-1]都是有序的,然后我们将A[n]插入到A[1–n-1]的某个合适的位置上去那么就可以保证A[1–n]都是有序的。这就是插入排序的思想;具体实现的时候我们将数组的第一个元素看出有序,然后从第二个元素开始按照上面的步骤进行插入操作,直到插入...
分类:
编程语言 时间:
2015-03-06 23:41:27
阅读次数:
369
顺便,奉劝一下那些想要好好学习算法导论的同学们,你们最好有点以下课程的基础:1.离散数学(主要针对计算机科学的数学,学好离散数学,大学四年的计算机课程基本数学的需求已经满足一半了)2.概率论(证明算法效率的关键,如果算法导论不涉及到概率问题,那就不叫算法导论了,那就只是算法或者数据结构,因此,想.....
分类:
编程语言 时间:
2015-03-04 18:28:12
阅读次数:
125
这题真是浪费了很多时间,想法也对了,转移到寻找第k小的元素上来,然后根据两个都是一排好序的数组,像类似算法导论中利用partition找到划分的q,但在这里,由于题目要求O(logn),所以这个找q的过程必须是常数时间,想了好久想不到一个常数时间的划分。最后在网上找到答案了:分析:我们现在设计一个求...
分类:
其他好文 时间:
2015-03-04 14:19:17
阅读次数:
93
年前的时候去逛书店,久仰算法导论这本书的大名看见后也就买了下来。回家看了一段时间,发现看书的进度真的是极慢,书里的课后题很多,那些不会的问题也是通过网上搜别人的答案才得以解决的。所以,我就想把我看这本书的心得连带课后的解答分享给大家。同时也是给我坚持把算法导论这本书看完的一个动力^_^因为本书的第一...
分类:
编程语言 时间:
2015-03-03 23:29:49
阅读次数:
200