当前位置:首页 > 编程笔记 > 正文
已解决

leetcode 33. 搜索旋转排序数组

来自网友在路上 166866提问 提问时间:2023-09-27 10:56:38阅读次数: 66

最佳答案 问答题库668位专家为你答疑解惑

2023.9.26

        本题暴力法可以直接A,但是题目要求用log n的解法。 可以想到二分法,但是一般二分法适用于有序数组的,这里的数组只是部分有序,还能用二分法吗? 答案是可以的。因为数组是经过有序数组旋转得来的,所以在二分之后,左右两边必有一边是有序的。  具体细节看代码:

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) / 2;if(nums[mid] == target) return mid;//左半边升序的情况if(nums[0] <= nums[mid]){if(target < nums[mid] && target >= nums[0]){right = mid - 1;}else left = mid + 1;}//右半边升序的情况else{if(target > nums[mid] && target <= nums[nums.size()-1]){left = mid + 1;}else right = mid - 1;}}return -1;}
};

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"leetcode 33. 搜索旋转排序数组":http://eshow365.cn/6-14619-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!