zoukankan      html  css  js  c++  java
  • 33. Search in Rotated Sorted Array (JAVA)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

    If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

    The replacement must be in-place and use only constant extra memory.

    Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.

    1,2,3 → 1,3,2
    3,2,1 → 1,2,3
    1,1,5 → 1,5,1

    O(log n) =>想到二分法

    class Solution {
        public int search(int[] nums, int target) {
            return binarySearch(nums,target,0,nums.length-1); 
            
        }
        public int binarySearch(int[] nums, int target, int left, int right){
            if(left > right) return -1; //not found
            
            int mid = left + ((right-left)>>1);
            if(target == nums[mid]) return mid; //found
            
            if(nums[mid] < nums[left]){//rotate in the left part
                if(target < nums[mid] || target >nums[right]){ //target in the left part
                    return binarySearch(nums,target,left,mid-1);
                }
                else{ //target in the right part
                    return binarySearch(nums,target,mid+1,right);
                }
            }
            else if(nums[mid] > nums[right]){ //rotate in the right part
                if(target > nums[mid] || target < nums[left]) {//target in the right part
                    return binarySearch(nums,target,mid+1,right);
                }
                else{//target in the left part
                    return binarySearch(nums,target,left,mid-1);
                }
            }
            else{ //no rotate
                if(target < nums[mid]){
                    return binarySearch(nums,target,left,mid-1);
                }
                else{
                    return binarySearch(nums,target,mid+1,right);
                }
            }
                         
        }
    }
  • 相关阅读:
    USACOZero Sum
    USACOControlling Companies
    USACOParty Lamps
    USACOMoney Systems
    UVa11292
    USACOLongest Prefix
    USACOThe Tamworth Two
    USACORunaround Numbers
    业内常见电子病历编辑器简单比较(1)编辑控件来源比较
    GB(国标)字典大全
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10811963.html
Copyright © 2011-2022 走看看