leetcode81. Search in Rotated Sorted Array
来源:互联网 发布:c语言32个关键字举例 编辑:程序博客网 时间:2024/05/18 02:52
medium题
题目:
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,2,3,4,5,6,7 以5为轴翻转为6,7,1,2,3,4,5在这个数组中查找给定元素。
可以用二分法来解
AC解
class Solution {public: bool search(vector<int>& nums, int target) { int first = 0,v_size = nums.size(); int last = v_size; if (last == 0) return false; while (first < last) { int middle = first + (last - first) / 2; if (nums[middle] == target) return true; if (nums[first] <= nums[middle]) {//说明first到middle是递增的 if (target >= nums[first]&&target < nums[middle]) last = middle; else first = middle + 1; } else { if (target > nums[middle]&&target <= nums[last - 1]) first = middle + 1;//middle到last-1是递增的 else last = middle; } } return false; }};
升级版,允许有重复元素则nums[first] <= nums[middle]不能说明first到middle是递增的,如1,3,1,1
需要细分
AC解
class Solution {public: bool search(vector<int>& nums, int target) { int first = 0,v_size = nums.size(); int last = v_size; if (last == 0) return false; while (first < last) { int middle = first + (last - first) / 2; if (nums[middle] == target) return true; if (nums[first] < nums[middle]) { if (target >= nums[first]&&target < nums[middle]) last = middle; else first = middle + 1; } else if (nums[first] > nums[middle]) { if (target > nums[middle]&&target <= nums[last - 1]) first = middle + 1; else last = middle; } else first++; } return false; }};
0 0
- leetcode81---Search in Rotated Sorted Array II
- leetcode81~Search in Rotated Sorted Array II
- leetcode81. Search in Rotated Sorted Array
- leetcode81. Search in Rotated Sorted Array II
- LeetCode81 Search in Rotated Sorted Array II
- LeetCode81——Search in Rotated Sorted Array II
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Android模板制作
- 数据结构-顺序表
- Linux线程同步之——互斥量(Mutex)
- Ajax应用之级联下拉列表
- 两个线程分别执行100次i++
- leetcode81. Search in Rotated Sorted Array
- Clientdataset 复制数据
- MFC -eidt设置最大size
- 常见对话框
- Qt5.8 + VS2015 使用QMessageBox中文乱码
- 写好你的JavaScrip
- 在windows下用pycaffe跑FCN用GPU模式报(0xc0000409
- 蓝桥杯 K好数
- SPOJ KAOS