博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 33. Search in Rotated Sorted Array 81. Search in Rotated Sorted Array II
阅读量:6154 次
发布时间:2019-06-21

本文共 2613 字,大约阅读时间需要 8 分钟。

这个题和剑指上旋转数组求最小值有点不一样,还是用二分查找的方法做,但条件判断较为繁琐。首先明确一点,无论怎么分,左右两侧总有一个是有序的,并且一般情况左侧是大的数,右侧是小的数。mid小于target的时候,相当于要找一个更大的数,所以想法是先排除一般情况下小的数,如果start < mid,证明这是个升序,那只可能在右侧;如果start > mid,证明右侧是升序,只要和最大的比较,也就是end,如果比end小,说明数字在右侧,如果比end大,说明数字在左侧,因为比最大的都大了。

总体上就是当target大于mid的时候,就去比较可能出现大数的左侧区间,如果是升序,那就能排除;如果左侧区间不是升序,则右侧是升序,需要拿这个升序的最大值和mid进行比较来确定下一个区间

class Solution {public:    int search(vector
& nums, int target) { int length = nums.size(); if(length <= 0) return -1; int start = 0; int end = length - 1; while(start <= end){ int mid = (start + end)/2; if(nums[mid] == target) return mid; else if(nums[mid] < target){ if(nums[mid] > nums[start]) start = mid + 1; else{ if(target > nums[end]) end = mid - 1; else start = mid + 1; } } else{ if(nums[mid] < nums[end]){ end = mid - 1; } else{ if(target < nums[start]) start = mid + 1; else end = mid - 1; } } } return -1; }};

https://www.cnblogs.com/springfor/p/3858140.html

 

81. Search in Rotated Sorted Array II

这个代码超时了

class Solution {public:    bool search(vector
& nums, int target) { int length = nums.size(); if(length <= 0) return false; int start = 0; int end = length - 1; while(start <= end){ int mid = (start + mid)/2; if(nums[mid] == target) return true; else if(nums[mid] > target){ if(nums[mid] == nums[end]) end--; else if(nums[mid] < nums[end]) end = mid - 1; else{ if(target < nums[start]) start = mid + 1; else end = mid - 1; } } else{ if(nums[mid] == nums[start]) start++; else if(nums[mid] > nums[start]) start = mid + 1; else{ if(target > nums[end]) end = mid - 1; else start = mid + 1; } } } return false; }};

https://www.cnblogs.com/springfor/p/3859525.html

你可能感兴趣的文章
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>
Vue.js连接后台数据jsp页面  ̄▽ ̄
查看>>
关于程序的单元测试
查看>>
mysql内存优化
查看>>
都市求生日记第一篇
查看>>
Java集合---HashMap源码剖析
查看>>
SQL优化技巧
查看>>
thead 固定,tbody 超出滚动(附带改变滚动条样式)
查看>>
Dijkstra算法
查看>>
css 动画 和 响应式布局和兼容性
查看>>
csrf 跨站请求伪造相关以及django的中间件
查看>>
MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
查看>>
生日小助手源码运行的步骤
查看>>
Configuration python CGI in XAMPP in win-7
查看>>
bzoj 5006(洛谷 4547) [THUWC2017]Bipartite 随机二分图——期望DP
查看>>
CF 888E Maximum Subsequence——折半搜索
查看>>
欧几里德算法(辗转相除法)
查看>>