• 81-Search in Rotated Sorted Array II


    【题目】

    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.

    【思路】

    1.与题一的思路类似

    2.不过,当A[mid]==A[left]时,就不好判断左右两部分哪边是有序的

    3.当A[mid]==A[left],若target==A[left],返回true;否则left++

    【算法实现】

    public class Solution {
        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 mid=(left+right)/2;
                if(target==A[mid])
                    return true;
                else if(A[mid]>A[left]) {
                    if(target<A[mid]&&target>=A[left])
                        right=mid-1;
                    else
                        left=mid+1;
                }else if(A[mid]<A[left]) {
                    if(target>A[mid]&&target<=A[right])
                        left=mid+1;
                    else 
                        right=mid-1;
                }else {
                    if(target==A[left])
                        return true;
                    else 
                        left++;
                }
            }
            return false;
        }
    }
  • 相关阅读:
    poj2739
    poj1469
    poj2010
    poj1179
    poj1778
    使用数组实现ArrayList的效果
    zgb老师关于java集合的总结
    jah老师中关于集合的总结
    继承一个类或者是实现一个接口注意点
    5、Iterator迭代器的使用
  • 原文地址:https://www.cnblogs.com/hwu2014/p/Array.html
Copyright © 2020-2023  润新知