Leetcode -- 33. Search in Rotated Sorted Array
来源:互联网 发布:iphone美图软件 编辑:程序博客网 时间:2024/05/16 04:39
题目:
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.
思路:由于数组是有递增有序数组旋转得到的,我们需要找到有序数组的旋转轴,然后对旋转后的数组分段利用二分查找。
- 利用二分查找,找到旋转轴;
- 对两段递增数组利用二分查找。
C++代码如下:
class Solution {public: int search(vector<int>& nums, int target) { if(nums.empty()) return -1; int l = 0, r = nums.size()-1; int i; while (l <= r) { i = (l + r) / 2; if (nums[i] > nums[i + 1]) break; else if (nums[i] >= nums[0]) l = i + 1; else r = i - 1; } if (target >= nums[0] && target <= nums[i]) return binarySearch(nums, 0, i, target); if (target >= nums[i + 1] && target <= nums[nums.size() - 1]) return binarySearch(nums, i + 1, nums.size() - 1, target); return -1; }private: int binarySearch(vector<int>& nums, int l, int r, int target) { int mid; while (l <= r) { mid = (l + r) / 2; if (nums[mid] == target) return mid; else if (nums[mid] < target) l = mid + 1; else r = 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
- Java反射调用未知的方法
- RSS介绍、RSS 2.0规范说明及php实现RSS订阅
- JS 将Table数据导出到Excel表
- 学习PHP结构图
- spring四种依赖注入方式
- Leetcode -- 33. Search in Rotated Sorted Array
- 《Android高级进阶》读书笔记——第一章:Android 触摸事件传递机制
- 阿里2018届实习生内推经历
- Java 代码性能优化
- 代理模式(Proxy Pattern)之远程代理服务
- Hexo + GitHub配置个人博客
- fa
- LIRe图像检索:Tamura纹理特征算法源码分析
- 欢迎使用CSDN-markdown编辑器