leetcode 81 Search in Rotated Sorted Array II ----- java
生活随笔
收集整理的這篇文章主要介紹了
leetcode 81 Search in Rotated Sorted Array II ----- java
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Follow up for "Search in Rotated Sorted Array":
What if?duplicates?are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
第33題的延伸題。
33題說的是給定一個數組,這個數組可能從某個位置分成兩部分,這兩部分都是排序好的,假設沒有重復的數字,給定一個數,然后求出那么數的位置,不存在則返回-1;
這道題說的就是假設可以重復。
當然不能直接循環一次,那樣就沒有意義了。
如果沒有重復的數字,就修改一下二分法就行了,其實也就是幾種情況,分類討論一下就好。
在這里有重復的數字,那么就是,如果遇到pos和left處的數字一樣,或者說pos和right處的數字一樣,那么移動一個數字。
public class Solution {public boolean search(int[] nums, int target) {int len = nums.length;int left = 0,right = len-1;int pos;while( left <= right ){pos = (left+right)/2;if( target == nums[pos])return true;else if( nums[pos] > nums[left] ){if( target >= nums[left] && target < nums[pos])right = pos-1;elseleft = pos+1;}else if( nums[pos] < nums[right] ){if( target <= nums[right] && target > nums[pos])left = pos+1;elseright = pos-1;}else if( nums[pos] == nums[left] ){left++;}else if( nums[pos] == nums[right] )right--;}return false;} }?
轉載于:https://www.cnblogs.com/xiaoba1203/p/5967285.html
總結
以上是生活随笔為你收集整理的leetcode 81 Search in Rotated Sorted Array II ----- java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js生成图片
- 下一篇: 【Luogu】P3343地震后的幻想乡(