2012年9月19日

在移位数组中查找数

摘要: 题目描述:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。解析:很多解法的时间复杂度都停留在O(n),下面的解法 仍为二分查找法 只不过 对应题目做了相应的改进 时间复杂度为O(log2n)1.思路:(画图实际上更直观看出来思路,读者试着自己画出图来对应分析)设数组a[start]~a[end],mid = (start + end) / 2 在进行二叉查找时,待查找数肯定会在变量mid的两侧,其中mid的取值主要有以下几情况,第一种为a[mid] < a[start] 说明此时mid对应的数 阅读全文

posted @ 2012-09-19 16:13 as_ 阅读(945) 评论(0) 推荐(0)

和为n连续正数序列

摘要: 题目描述:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:来源于互联网 以下仅给出思路解法一:两个for循环解决,复杂度O(n2)解法二:因为整数序列有序,可以设立两个游标satrt,end,通过判区间[start,end]的和是否为n来得到这个序列。如果区间和大于n,start往前移动,如果小于n,end往前移动,等于就输出这个区间。时间复杂度是0(n).解法三:假设start + (start + 1) + ... +end = n 是一个答案,则根据求和公式就是 (start + 阅读全文

posted @ 2012-09-19 13:19 as_ 阅读(1162) 评论(0) 推荐(0)

导航