zoukankan      html  css  js  c++  java
  • 081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||

    这是 “搜索旋转排序数组”问题的跟进:
    如果数组元素允许重复,怎么办?
    这会影响到程序的时间复杂度吗?会有怎样的影响,为什么?
    假设按照升序排序的数组在预先未知的某个关键点上旋转。
    (例如, 0 1 2 4 5 6 7 可能变成 4 5 6 7 0 1 2)。
    编写一个函数来判断给定的目标是否在数组中。
    该数组可能包含重复项。
    详见:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/description/

    Java实现:

    class Solution {
        public boolean search(int[] nums, int target) {
            int n=nums.length;
            if(n==0||nums==null){
                return false;
            }
            int left=0;
            int right=n-1;
            while(left<=right){
                int mid=(left+right)>>1;
                if(nums[mid]==target){
                    return true;
                }else if(nums[left]==nums[mid]&&nums[mid]==nums[right]){
                    ++left;
                    --right;
                }else if(nums[left]<=nums[mid]){
                    if(nums[left]<=target&&target<nums[mid]){
                        right=mid-1;
                    }else{
                        left=mid+1;
                    }
                }else{
                    if(target>nums[mid]&&target<=nums[right]){
                        left=mid+1;
                    }else{
                        right=mid-1;
                    }
                }
            }
            return false;
        }
    }
    
  • 相关阅读:
    安装AD域时,出现NetBIOS名称冲突?
    SharePoint Server 2010 安装图解
    Visual C++ 2011519
    Visual C++ 2011520
    Visual C++ 2011518
    Visual C++ 2011520
    设计模式创建型 C++版本
    线程条件变量,一次性初始化
    Visual C++ 2011526
    Visual C++ 2011512
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8711711.html
Copyright © 2011-2022 走看看