【Leetcode】Search in Rotated Sorted Array II

来源:互联网 发布:方维app.js 编辑:程序博客网 时间:2024/06/05 08:30

不同的是,这道题中出现的重复的元素,所以情况更加复杂一些

如果A[left]<A[middle] 说明左边排好了序,右边可能排好了序,可能没排好序,可能全部相等

如果A[left]>A[middle] 说明左边没有排好序,右边可能拍好了序,可能全部相等,

如果A[left]=A[middle] 说明无法判断左边是否排好序了,这样只能通过移动左指针来寻找1,2的情况

既然我们没办法判断右边,索性我们放弃右边,只判断左边,代码如下

public boolean search(int[] A, int target) {if (A == null || A.length == 0)return false;int left = 0;int right = A.length - 1;while (left <= right) {int middle = (left + right) / 2;if (target == A[middle])return true;if (A[left] < A[middle]) {if (target >= A[left] && target <= A[middle])right = middle - 1;elseleft = middle + 1;}else if (A[left] > A[middle]) {if (target >= A[middle] && target <= A[right])left = middle + 1;elseright = middle - 1;}elseleft++;}return false;}



0 0
原创粉丝点击