[leetCode]Search in Rotated Sorted Array
来源:互联网 发布:淘宝网上买东西 编辑:程序博客网 时间:2024/06/03 03:30
问题1:
Suppose a sorted array 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.
思路:使用二分查找,若中间数大于等于最左端数,那左半部分必定有序,否则右半部分有序,通过将目标数与有序部分的最大与最小数比较就可以判断目标数位于哪一部分。
int search1(int A[], int n, int target) { // Start typing your C/C++ solution below // DO NOT write int main() functionif(n == 0)return -1;int L = 0;int H = n - 1;int M = 0;while(L <= H){M = L + (H - L)/2;if(target == A[M])return M;if(A[L] <= A[M]){if(target >= A[L] && target < A[M]){H = M -1;}elseL = M + 1;}else{if(target > A[M] && target <= A[H])L = M + 1;elseH = M - 1;}}return -1; }
同样是问题1, 只不过移位数组中出现了相同的数。是duplicated.
思路:
思路:二分查找,需要注意的是,若中间数字跟最左端数字相等时,去掉最左端的数字,然后递归查找。
bool search(int A[], int n, int target) { // Start typing your C/C++ solution below // DO NOT write int main() functionif(n == 0)return false;int L = 0;int H = n - 1;int M = 0;while(L <= H){M = L + (H - L)/2;if(target == A[M])return true;if(A[L] < A[M]){if(target >= A[L] && target < A[M]){H = M -1;}elseL = M + 1;}else if(A[M] < A[L]){if(target > A[M] && target <= A[H])L = M + 1;elseH = M - 1;}else L ++;}return false; }
- [leetcode][search] Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array II
- LeetCode Search in Rotated Sorted Array
- LeetCode Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array
- LeetCode : 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
- [Leetcode] Search in a Rotated Sorted Array
- [Leetcode] Search in Rotated Sorted Array II
- leetcode 97: Search in Rotated Sorted Array
- [LeetCode] Search in Rotated Sorted Array
- [leetcode] Search in Rotated Sorted Array
- [leetcode] Search in Rotated Sorted Array II
- Leetcode Search in Rotated Sorted Array
- [LeetCode]Search in Rotated Sorted Array
- 浅析杀毒软件开发原理(之查毒引擎)
- SQL Server2005 异常处理机制
- CUDA SDK VolumeRender 分析
- Hello World !
- UITableView划动删除的实现
- [leetCode]Search in Rotated Sorted Array
- 大话设计模式--抽象工厂模式 Abstract Factory -- C++实现实例
- php session 跨页面传值
- 设计模式中类的关系
- tcp http 杂知识
- acm每日一练之分数加减法
- 不能安装一些软件openssh-server需要更新源
- 简单 sql 分页学习
- 用ffmpeg将aac转成mp3 的.bat文件