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);
                }
            }
                         
        }
    }
  • 相关阅读:
    Bye sent_keys
    快速获取Jenkins上build
    快速搞定selenium grid分布式
    python 图形界面开发
    [分享] 自动化测试与持续集成方案-- UI 检查
    hua ge ju hao
    暴力 C++
    简单排序(java)
    记codeforces两题
    hdu 1874, dijkstra
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10811963.html
Copyright © 2011-2022 走看看