leetcode(33) - Search in Rotated Sorted Array
2016-11-21 23:59
447 查看
int find(int* nums, int start, int end, int target) { if (start>end) return -1; int mid=0; while(start <= end){ mid=(start+end)/2; if (nums[mid] < target){ start=mid+1; } else { if (nums[mid] > target){ end=mid-1; } else { return mid; } } } return -1; } int search(int* nums, int numsSize, int target) { int start=0, end=numsSize-1; int index=0; //翻转的临界点 int num1=-1, num2=-1; int flag=0; while(index+1 < numsSize){ if(nums[index] >= nums[index+1]){ flag=1; break; } index++; } if(flag==0) index=0; printf("%d", index); if(target <= nums[index] && target >= nums[0]){ return find(nums, 0, index, target); } else { return find(nums, index+1, numsSize-1, target); } }
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e.,
0 1 2 4 5 6 7might become
4 5 6 7 0 1 2).
You are given a target value to search. If found in the array return its index, otherwise return -1.
本题是二分查找的变形题,主要就是找到翻转的那个临界点(下一个数值比它小)就可以了,然后看target的大小判断应该在哪个范围内进行二分查找。
相关文章推荐
- LeetCode --- 33. Search in Rotated Sorted Array
- [Leetcode] 33. Search in Rotated Sorted Array
- leetcode 33 -- Search in Rotated Sorted Array
- Search in Rotated Sorted Array - LeetCode 33
- [leetcode 33]Search in Rotated Sorted Array
- 33.search in rotated sorted array leetcode java
- leetcode 33: Search in Rotated Sorted Array
- [leetcode-33]Search in Rotated Sorted Array(C)
- leetcode 33 Search in Rotated Sorted Array
- LeetCode 33 — Search in Rotated Sorted Array(C++ Java Python)
- leetcode[33]Search in Rotated Sorted Array
- [Leetcode 33, Hard] Search in Rotated Sorted Array
- LeetCode(33)Search in Rotated Sorted Array
- [leetcode 33] Search in Rotated Sorted Array
- LeetCode 33 Search in Rotated Sorted Array 二叉查找(三)
- Leetcode[33]-Search in Rotated Sorted Array
- LeetCode(33)Search in Rotated Sorted Array
- LeetCode(33)Search in Rotated Sorted Array
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- LeetCode 33, Search in Rotated Sorted Array-----Binary Search