33. Search in Rotated Sorted Array 旋转排序数组极值的二分求法
来源:互联网 发布:mac地址获取工具 编辑:程序博客网 时间:2024/06/04 04:58
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) { int n = nums.size(); int lo = 0, hi = n - 1; while(lo < hi){//find smallest int mid = (lo + hi) / 2; if(nums[mid] > nums[hi]) lo = mid + 1;// 这里 nums[mid] > nums[hi] 一定大于 所以要 +1 else hi = mid;// (lo + hi) / 2 会使mid 一定小于hi 已经至少减1了 无需 hi = mid; } int L, R; if(lo == 0){//如果n == 1 ,lo必等于0,必进这个分支 L = 0; R = n - 1; }else if(target >= nums[0]){ L = 0; R = lo - 1; }else{ L = lo; R = n - 1; } while(L <= R){ if(target > nums[R] || target < nums[L] ) return -1; int mid = (L + R) / 2; if(nums[mid] == target) return mid; else if(nums[mid] > target) R = mid - 1;//类似于第8行 一定要 -1 else L = mid + 1; } return L; }};
0 0
- 33. Search in Rotated Sorted Array 旋转排序数组极值的二分求法
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- [LintCode] 搜索旋转排序数组 Search in Rotated Sorted Array
- (每日算法)LeetCode --- Search in Rotated Sorted Array(旋转数组的二分检索)
- Search in Rotated Sorted Array-旋转数组的查找
- 查找已排序的旋转后的数组中的数(Search in Rotated Sorted Array)
- Search in Rotated Sorted Array II 旋转数组二分查找 有重复
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- LeetCode @ Search in Rotated Sorted Array 旋转数组查找
- 【LeetCode】Search in Rotated Sorted Array旋转数组问题总结
- LeetCode 33 Search in Rotated Sorted Array(在旋转排序数组中搜索)(*)
- [Lintcode] 搜索旋转排序数组 II Search in Rotated Sorted Array II
- 62.Search in Rotated Sorted Array-搜索旋转排序数组(中等题)
- 63.Search in Rotated Sorted Array II-搜索旋转排序数组 II(中等题)
- [Lintcode] Search in Rotated Sorted Array II 搜索旋转排序数组 II
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- Search in Rotated Sorted Array 倒置数组中的二分查找
- 排序旋转数组查找(Search in a sorted, rotated list)
- opnet之加强mm1模型之删除事件
- Linux命令记录
- 基于Android的mvc、mvp以及mvvm架构分析(上)
- 【caffe源码研究】第三章:源码篇(13) :损失层
- android studio 多渠道打包以及工程的定制化(上)
- 33. Search in Rotated Sorted Array 旋转排序数组极值的二分求法
- 【寒江雪】开启深度缓存
- 制作Plesk镜像
- JavaWeb学习之路(一)--- 数据库简单操作操作和事务
- 判断对象类型的方法
- Java集合框架
- SpringBoot(2) 搭建SpringFox环境
- android:sqlite的使用(读取res/raw的db文件)一种方法
- CC2530 zstack 2.5.1 生成hex文件