Search in Rotated Sorted Array
来源:互联网 发布:淘宝店铺简介如何写 编辑:程序博客网 时间:2024/06/03 13:55
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.
第一次提交的代码如下:
class Solution { public: int search(vector<int>& nums, int target) { if(nums.empty()) return -1; //二分查找最小的元素的下标 int start = 0; int end = nums.size()-1; while(start < end) { int mid = (start + end) / 2; if(nums[mid] > nums[end]) start = mid + 1; else end = mid;//不是mid - 1 } cout << "二分查找: start : " << start << " end: " << end <<endl; int smallest = start; start = 0; end = nums.size() - 1; while(start <= end) { int mid = (start + end) / 2; int realmid = (mid + smallest) % nums.size();//想像成一个环 cout << "mid : " << mid << " realmid : " << realmid << endl; if(nums[realmid] == target) return realmid; else if(nums[realmid] < target) start = mid + 1; else end = mid - 1; } return -1; } };
但是提交之后,效果并不是特别明显,后来又上网查了资料,修改成下面的代码:
class Solution {public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size()-1; while(l<=r) { int m = (l+r)/2; if(nums[m] == target) return m; if(nums[m]>= nums[l]) { if(nums[l]<=target && target< nums[m]) r=m-1; else l = m+1; } else { if(nums[m]< target && target<=nums[r]) l = m+1; else r = m-1; } } return -1; }};
参考链接:
Search in Rotated Sorted Array 解题报告
0 0
- 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
- 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
- 网站统计功能的设计和实现
- 半年总结——思想的转变
- 集合B(哈希表模板题)
- gym100812G(想法题,最短路变形,好题)
- intellij idea 2016.03 version control 忽略文件夹
- Search in Rotated Sorted Array
- Spring AOP的几种实现方式
- BZOJ2752 [HAOI2012]高速公路(road)
- root登陆设置
- 职责链模式(23)
- ios 技术支持网址
- linux 服务器安全防攻击
- C#中的Dictionary字典类介绍
- win7管理模板“进行解析时遇到错误”的解决方法