LeetCode 33 Search in Rotated Sorted Array
来源:互联网 发布:java web truelicense 编辑:程序博客网 时间:2024/05/17 01:20
题意:
一个数字环,它里面的数字是递增排序的,现在从任意位置把它截断成序列,问target是否在环中出现。
思路:
一定能想到二分查找,但是这个序列并不是有序的。不过我们仍然可以创造一种二分的方式,毕竟二分的精髓是每次丢掉一般的候选集合。方法如下:
1.如果当前区间的中间值是答案,则找到答案。
2.如果当前区间是递增的,那么和平时我们写的二分查找就一样了。不详细展开了。
3.中间值将区间分成两部分,其中至少有一部分是递增的。因此只需要判断target是否在递增的那一段中即可,若在则丢掉另一半,否则丢掉这一半。
代码:
class Solution {public: int search(vector<int> &nums, int target) { int l = 0, r = nums.size() - 1; int ans = -1; while (l <= r) { int mid = (l + r) >> 1; if (target == nums[mid]) { ans = mid; break; } if (nums[l] <= nums[r]) { if (target <= nums[mid]) { r = mid - 1; } else { l = mid + 1; } } else { if (nums[l] <= nums[mid]) { if (target >= nums[l] && target <= nums[mid]) { r = mid - 1; } else { l = mid + 1; } } else { if (target <= nums[r] && target >= nums[mid]) { l = mid + 1; } else { r = mid - 1; } } } } return ans; }};
0 0
- LeetCode(33)Search in Rotated Sorted Array
- [leetcode 33] Search in Rotated Sorted Array
- leetcode|33|Search in Rotated Sorted Array
- Leetcode 33 Search in Rotated Sorted Array
- Leetcode[33]-Search in Rotated Sorted Array
- leetcode 33 -- Search in Rotated Sorted Array
- Search in Rotated Sorted Array - LeetCode 33
- leetcode 33 Search in Rotated Sorted Array
- leetcode 33: Search in Rotated Sorted Array
- Leetcode #33 Search in Rotated Sorted Array
- LeetCode #33 Search in Rotated Sorted Array
- Leetcode#33||Search in Rotated Sorted Array
- leetcode 33 : Search in Rotated Sorted Array
- leetcode-33 Search in Rotated Sorted Array
- LeetCode 33: Search in Rotated Sorted Array
- LeetCode(33)-Search in Rotated Sorted Array
- leetcode-33-Search in Rotated Sorted Array
- 【leetcode】【33】Search in Rotated Sorted Array
- 白帽子讲web安全之7(WEB 服务器配置安全)
- Android多线程
- 企业应用中的作业调度
- Spring Boot RabbitMQ 入门(四)之 Topic交换器
- [LeetCode]Contains Duplicate II
- LeetCode 33 Search in Rotated Sorted Array
- BZOJ 1010 斜率DP
- Activity和Fragment使用同一个actionBar menu文件
- java读写excel(POI,支持xls和xlsx两种格式)
- 自己不官方的理解typeof和instanceof
- 设计模式六大原则:依赖倒置原则
- java基础面试(收藏上)
- OpenCV-调整图像的对比度、亮度
- linux mysql 备份与恢复