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);
                }
            }
                         
        }
    }
  • 相关阅读:
    Javascript-DOM
    我的小站成长之路
    Reverse Proxy Vs Forward Proxy
    SSO-单点统一登录系统的设计与实现
    关于网络实名制
    LoggerOne
    AmpOne
    Get a handle on PHP Handlers
    Which PHP mode? Apache vs CGI vs FastCGI
    强制浏览器在点击回退按钮时重载刷新页面
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10811963.html
Copyright © 2011-2022 走看看