Search in Rotated Sorted Array解题报告
来源:互联网 发布:淘宝网上衣 编辑:程序博客网 时间:2024/06/10 04:50
题目描述
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.
解题思路
这道题需要用二分搜索。
代码
class Solution {public: int search(vector<int>& nums, int target) { int left=0; int right=nums.size()-1; while(left<right){ int mid=left+(right-left)/2; if(nums[mid]>nums[right]) left=mid+1; else right=mid; } int root=left; left=0; right=nums.size()-1; while(left<=right){ int mid=left+(right-left)/2; int realmid=(mid+root)%nums.size(); if(nums[realmid]==target) return realmid; else if(nums[realmid]>target) right=mid-1; else left=mid+1; } return -1; }};另一道题,Search in Rotated Sorted Array II这道题和上道题类似,不过需要考虑有重复的情况。仍然用二分搜索的方法:
如果mid和target相等则返回true;
不相等的情况下需要考虑数组的分布:
如果mid大于end则说明数组的左半部分是升序的,此时判断target和mid的关系,如果target小于mid且大于start则搜索部分缩小为左半部分,否则是右半部分;
如果mid小于end则说明数则的右半部分是升序的,此时判断target和mid的关系,如果target大于mid且小于end则缩小为右半部分,否则是左半部分;
若mid等于end怎无法判断仍然在整个数组中搜索。
代码:
class Solution {public: bool search(vector<int>& nums, int target) { int start=0; int end=nums.size()-1; while(start<=end){ int mid = start+(end-start)/2; if(nums[mid]==target) return true; if(nums[mid]>nums[end]){//left sorted if(target>=nums[start]&&target<nums[mid]) end=mid-1; else start=mid+1; } else if(nums[mid]<nums[end]){//right is sorted if(target>nums[mid]&&target<=nums[end]) start=mid+1; else end=mid-1; } else end--; } return false; }};
0 0
- Search in Rotated Sorted Array解题报告
- Search in Rotated Sorted Array解题报告
- 【LeetCode】Search in Rotated Sorted Array 解题报告
- 【LeetCode】Search in Rotated Sorted Array II 解题报告
- [leetcode] 33. Search in Rotated Sorted Array 解题报告
- [leetcode] 81. Search in Rotated Sorted Array II 解题报告
- [LeetCode] Search in Rotated Sorted Array 解题报告
- [LeetCode] Search in Rotated Sorted Array II 解题报告
- LeetCode(33) Search in Rotated Sorted Array解题报告
- [Leetcode] 33. Search in Rotated Sorted Array 解题报告
- [Leetcode] 81. Search in Rotated Sorted Array II 解题报告
- Search in Rotated Sorted Array LeetCode解题报告
- Leetcode #33. Search in Rotated Sorted Array 旋转数组查询 解题报告
- Leetcode 81. Search in Rotated Sorted Array II 旋转数组查询2 解题报告
- leecode 解题总结:33. Search in Rotated Sorted Array
- leecode 解题总结:81. Search in Rotated Sorted Array II
- leetcode解题方案--033--Search in Rotated Sorted Array
- 【LeetCode】Find Minimum in Rotated Sorted Array 解题报告
- 冒泡排序及其优化
- Mysql数据库的优化方法
- 疯狂Android讲义-----第一章 Android应用的基本组件介绍
- 文本特征选择之互信息和卡方
- HTTP协议理解
- Search in Rotated Sorted Array解题报告
- Iconfont图标使用-打造自己项目下…
- 基于bootstrap的autocomplete自动…
- 各类API文档下载
- 文章标题
- Codevs 1997 守卫者的挑战
- mysql日期函数小记01
- iOS协议
- C#原生连接数据库并操作数据库的方法