• 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);
                }
            }
                         
        }
    }
  • 相关阅读:
    查询linux服务器有哪些IP在连接
    GitLab的使用
    jenkins安装
    GitLab安装
    Git for Linux
    PV并发UV
    yum安装zabbix故障报错
    redis备份恢复
    python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04
    python函数闭包-装饰器-03
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10811963.html
Copyright © 2020-2023  润新知