leetcode 33. Search in Rotated Sorted Array
来源:互联网 发布:淘宝天猫买家注册 编辑:程序博客网 时间:2024/05/01 23:19
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.
从旋转数组中查找target.
2.思路
肯定得用二分查找,不然超时。那么,怎么个二分法呢?首先,可以看一下旋转数组的几种状态(主要是nums[mid]所在的位置)
第一种情况,如果target == nums[mid] ,最理想不过了,直接返回。
第二种情况,如果target < nums[mid],那么target所在的区间如下图:
第三种情况 原理同上。。。
代码如下:
class Solution {public:int search(vector<int>& nums, int target) { int len = nums.size(); int left = 0,right = len-1; int mid; while(left <= right) { mid = left + (right - left)/2; if(nums[mid] == target) return mid; else if(nums[mid] > target) { if(nums[left] > nums[right]) // 如果在一个有旋转的序列里 { if( (nums[mid] < nums[left]) || (target >= nums[left]) ) // >=号特别重要 right = mid - 1; else left = mid + 1; } else // 在一个正常序列里 right = mid - 1; } else { if(nums[left] > nums[right]) { if( (nums[mid] < nums[left]) && (target >= nums[left]) ) right = mid - 1; else left = mid + 1; } else left = 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
- WebService(一)
- mysql 5.7 linux环境下安装
- 路由模式 -- ADSL账号密码拨号
- 两个桶分油问题
- LintCode_419_罗马数字转整数
- leetcode 33. Search in Rotated Sorted Array
- 有米Android SDK 实用工具
- awk命令求和
- 个人笔记:Imageload 不同位置下的图片加载路径方式
- bootstrap中的table相关问题
- 数据结构与算法——散列表类的C++实现(分离链接散列表)
- HTML中href、src区别
- leetcode之longest palindromic substring
- LeetCode(50)-Word Pattern