[LeetCode] 33. Search in Rotated Sorted Array
来源:互联网 发布:js修改css样式 编辑:程序博客网 时间:2024/06/08 08:43
题:https://leetcode.com/problems/search-in-rotated-sorted-array/description/
问题
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might 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.
You may assume no duplicate exists in the array.
思路
1.用二分查找的方式去求解,但亮点在于可以确定旋转后mid的位置realmid。
2.求解旋转点时,因为旋转点即为数字串中最小值的位子。问题变为求最小值的位置,利用数组的部分有序,实行二分法查找(重要)。
直接放别人做的源码,上面有很详细地注释。
源码
class Solution {public: int search(int A[], int n, int target) { int lo=0,hi=n-1; // find the index of the smallest value using binary search. // Loop will terminate since mid < hi, and lo or hi will shrink by at least 1. // Proof by contradiction that mid < hi: if mid==hi, then lo==hi and loop would have been terminated. while(lo<hi){ int mid=(lo+hi)/2; if(A[mid]>A[hi]) lo=mid+1; else hi=mid; } // lo==hi is the index of the smallest value and also the number of places rotated. int rot=lo; lo=0;hi=n-1; // The usual binary search and accounting for rotation. while(lo<=hi){ int mid=(lo+hi)/2; int realmid=(mid+rot)%n; if(A[realmid]==target)return realmid; if(A[realmid]<target)lo=mid+1; else hi=mid-1; } return -1; }};
阅读全文
0 0
- [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
- 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
- leetcode 33. Search in Rotated Sorted Array
- LeetCode-33.Search in Rotated Sorted Array
- 第6次C练习
- C++中extern "C"的使用
- VMware无法连接 MKS:套接字连接尝试次数太多正在放弃
- Aspectj的使用demo
- execute immediate v_sql用法
- [LeetCode] 33. Search in Rotated Sorted Array
- JS基础
- 20171125 变量类型的大小
- PAT 1074
- 二维数组中的查找
- 第十五章作业
- 浅谈C语言中如何取随机数
- manacher算法及其应用
- 自然、接纳、内观、为所当为