leetcode个人题解——#33 Search in Rotated Sorted Array
思路:每次取中间元素,一定有一半有序,另一半部分有序,有序的部分进行二分查找,部分有序的部分递归继续处理。
class Solution {
public:
int pos = -;
int middleSearch(int left, int right,vector<int>& nums, int target){//二分查找
if(left > right || right > nums.size() - || left < )return -;
if(nums[left] == target)return left;
int mid = (left + right) / ;
if(nums[mid] == target)return mid;
if(target>nums[mid]) return middleSearch(mid+,right,nums,target);
else
return middleSearch(left,mid - ,nums,target);
}
void mixSearch(int left, int right, vector<int>& nums, int target){//混合处理
if(left > right || right > nums.size() - || left < ) return;
if(nums[left] == target) {
pos = left;
return;
}
int ans;
int middle = (left + right) / ;
if(nums[middle] > nums[right]) {
ans = middleSearch(left,middle,nums,target);
if(ans == -) mixSearch(middle+,right,nums,target);
else{
pos = ans;
return;
}
}
else{
ans = middleSearch(middle,right,nums,target);
if(ans == -) mixSearch(left,middle - ,nums,target);
else{
pos = ans;
return;
}
}
}
int search(vector<int>& nums, int target) {
mixSearch(,nums.size() - ,nums,target);
return pos;
}
};
写的冗余了点,附上简洁的代码:
class Solution {
public:
int search(vector<int>& nums, int target) {
int l = , r = nums.size() - ;
while(l <= r){
int mid = l + (r - l) / ;
if(nums[mid] == target) return mid;
if(nums[mid] > nums[r]){
if(target > nums[mid] || target <= nums[r]) l = mid + ; // condition for pick right side
else r = mid - ; // else, pick left side
}else{
if(target <= nums[r] && target > nums[mid]) l = mid + ; // condition for pick right side
else r = mid - ; // else, pick left side
}
}
return -;
}
};
leetcode个人题解——#33 Search in Rotated Sorted Array的更多相关文章
- LeetCode题解33.Search in Rotated Sorted Array
33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...
- [Leetcode][Python]33: Search in Rotated Sorted Array
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 33: Search in Rotated Sorted Arrayhttps ...
- [array] leetcode - 33. Search in Rotated Sorted Array - Medium
leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...
- LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>
LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...
- leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search
这4个题都是针对旋转的排序数组.其中153.154是在旋转的排序数组中找最小值,33.81是在旋转的排序数组中找一个固定的值.且153和33都是没有重复数值的数组,154.81都是针对各自问题的版本1 ...
- 33. Search in Rotated Sorted Array & 81. Search in Rotated Sorted Array II
33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...
- 刷题33. Search in Rotated Sorted Array
一.题目说明 这个题目是33. Search in Rotated Sorted Array,说的是在一个"扭转"的有序列表中,查找一个元素,时间复杂度O(logn). 二.我的解 ...
- [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- LeetCode 33. Search in Rotated Sorted Array(在旋转有序序列中搜索)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
随机推荐
- 用画布canvas画安卓logo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 为什么我们要做三份 Webpack 配置文件
时至今日,Webpack 已经成为前端工程必备的基础工具之一,不仅被广泛用于前端工程发布前的打包,还在开发中担当本地前端资源服务器(assets server).模块热更新(hot module re ...
- Selenium报错整理
1. driver不匹配(常见于打不开浏览器,或者浏览器能打开但是获取不了网页元素,或者无法sendKey等问题) Exception in thread "main" org.o ...
- [iOS]UIInterpolatingMotionEffect重力视觉差
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 20181031noip模拟赛T2
思路: 这道题是个图论抽象的题目…… 考场上想到了没写对…… 我们发现,f函数转移的方式有两种,要么是代价10的+1,要么是代价1的乘一个质因数 那么我们就可以将这个抽象为一张图 每个i向每个i+1连 ...
- C语言入门学习和整理 1-3
1. int main() { char c = 'A'; printf("c=%c", c); } int main() { ; printf("c=%c", ...
- windows 使用npm安装webpack 4.0以及配置问题的解决办法
输入cmd点击打开 输入node -v 出现nodejs版本号 输入npm -v 出现npm版本号则安装npm安装成功, 2.安装webpack 桌面新建一个webpack-test文件夹,点击进入文 ...
- 在软件webstorm中给img标签加入class报错显示错误selector matches unknow element
如题,怎么也搞不懂,在其他软件没出过这种问题,偏偏在webstorm中,显示class选择器未匹配到元素:哪位大神知道怎么解决这个问题.
- 追溯了解Ubuntu之------基本命令操作(叁)
在使用Ubuntu中的一些基本命令与Linux中是有区别的: 1. 查看Ubuntu系统位数:uname -ar 或 getconf LONG_BIT 2. 获取Ubu ...
- 基于 HTML5 Canvas 的拓扑组件开发
在现在前端圈大行其道的 React 和 Vue 中,可复用的组件可能是他们大受欢迎的原因之一, 在 HT 的产品中也有组件的概念,不过在 HT 中组件的开发是依托于 HTML5 Canvas 的技术去 ...