LeetCode 33. Search in Rotated Sorted Array
Posted 皇家大鹏鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 33. Search in Rotated Sorted Array相关的知识,希望对你有一定的参考价值。
这道题目很经典,本人表示在面试时遇见过,要求复杂度为O(logn),很显然必须用二分查找,但是旋转导致数组并非从左到右都是有序的,因此我们在查找时需要做判断,我们找打的终点左边或者右边至少一边是有序的;如果中间数小于最右边的数字,则右半段是有序的;如果中间数字大于最右边数字,则左半段是有序的,参考下图:
代码如下:
1 class Solution { 2 public: 3 int search(vector<int>& nums, int target) { 4 int left = 0, right = nums.size() - 1; 5 while (left <= right) 6 { 7 int mid = (left + right) / 2; 8 if (nums[mid] == target) 9 return mid; 10 else if (nums[mid] < nums[right]) 11 { 12 if (target > nums[mid] && target <= nums[right]) 13 left = mid+1; 14 else 15 right = mid - 1; 16 } 17 else 18 { 19 if (target < nums[mid] && target >= nums[left]) 20 right = mid - 1; 21 else 22 left = mid + 1; 23 } 24 } 25 return -1; 26 } 27 };
反思:一刷本来可以AC,结果犯了一个傻逼的错误,把“return -1”这条语句放在了while循环的里面,简直蠢透了,技术的魅力可能就在于它的严谨吧。
部分图片和思考来自于:
https://www.cnblogs.com/grandyang/p/4325648.html
https://www.cnblogs.com/cling-cling/p/4875961.html
以上是关于LeetCode 33. Search in Rotated Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章
#Leetcode# 33. Search in Rotated Sorted Array
leetcode33. Search in rotated sorted array
一天一道LeetCode#33. Search in Rotated Sorted Array
leetcode 33. Search in Rotated Sorted Array