LeetCode之Search in Rotated Sorted Array
来源:互联网 发布:淘宝金冠猪哼少被曝光 编辑:程序博客网 时间:2024/06/03 17:37
对旋转了的数组查找关键字的下标,例如对[1,2,3,4,5,6,7]旋转后的数组为[4,5,6,7,1,2,3]进行查找,并且假设数组中没有重复的数。
【算法】利用二分查找的方法,但是二分查找是前提是对于有序表,所以在查找的过程中判断是否有序。
【代码】
int Binary_Search(int a[],int n,int key){int low,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2;if(a[mid]==key)return mid;else //如果中间元素的值大于左边,则左边为有序数组,在左边进行二分查找if(a[low]<a[mid]){if(a[low]<=key&&key<=a[mid])high=mid-1;elselow=mid+1;}//中间元素的值小于等于左边,则右边为有序数组,在右边进行二分查找else{if(a[mid]<=key&&key<=a[high])low=mid+1;elsehigh=mid-1;}}return -1;}
若条件改为可以有重复的数,查找某个数是否在数组中存在,存在则返回1,不在返回-1;
如输入数组为[1,3,1,1,1],输出1.
【分析】
如果A[low] <= A[mid] 条件就不能确定[low mid]区间为递增有序序列,我们就把该条件分成两个字条件:
A[low] < A[mid] 则 [low mid]区间为递增有序序列
A[low] = A[mid] 则[low mid]区间不能确定,那就low++,往下一步看看即可。
//中间元素的值小于左边,则右边为有序数组,在右边进行二分查找else if(a[low]>a[mid]){if(a[mid]<=key&&key<=a[high])low=mid+1;elsehigh=mid-1;}//中间元素的值等于左边else low++;
0 0
- LeetCode之Search in Rotated Sorted Array
- LeetCode之Search in Rotated Sorted Array
- LeetCode之Search in Rotated Sorted Array
- LeetCode之Search in Rotated Sorted Array
- leetcode之Search in Rotated Sorted Array
- 【Leetcode】之Search in Rotated Sorted Array
- leetcode之Search in Rotated Sorted Array
- LeetCode 之 Search in Rotated Sorted Array
- leetcode之Search in Rotated Sorted Array 和Search in Rotated Sorted Array II
- [leetcode][search] Search in Rotated Sorted Array
- LeetCode之Search in Rotated Sorted Array II
- LeetCode之Search in Rotated Sorted Array II
- LeetCode之Search in Rotated Sorted Array II ()C++
- LeetCode之Search in Rotated Sorted Array二
- [Leetcode之Search in Rotated Sorted Array II (Java)
- LeetCode 之 Search in Rotated Sorted Array II
- LeetCode第33题之 Search in Rotated Sorted Array
- leetcode:数组之Search in Rotated Sorted Array
- 逗比之——程序员装逼手册1(初级版)
- 如何在两个app 之间传递数据
- nyist 773 开方数(大数问题)
- Qt5.1.1 编译 MySql5.6.17驱动程序的过程和注意事项
- PHP获取指定函数定义在哪个文件中及行号
- LeetCode之Search in Rotated Sorted Array
- 2014省赛大总结(一) DFS 与 BFS
- 逗比之——程序员装逼手册2(进阶版)
- Oracle树结构表查询
- uiautomator翻页寻找设置按钮
- 删除链表中重复的元素
- bluetooth开发(六)------蓝牙的功能测试(二)
- 从网页上下载控件时制作CAB包的方法
- 道路和航路