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


    June-21-2019

    这个题代码写得不如一刷简洁
    1 - 先通过nums[l] < nums[r] 判断是否rotate
    2 - 通过nums[m]和nums[l] 关系判断是6 7 1 2 3 4 5,还是6 7 8 9 1 2,左边右边哪边多,然后再接着判断,感觉就是楞做的。。

    仔细看其实把1的判断去掉也能过= =因为1的逻辑已经囊括在2里面了,所以这次写的不如一刷简洁= =

        public int search(int[] nums, int target) {
            if (nums == null || nums.length == 0) return -1;
            
            int l = 0, r = nums.length - 1;
            
            while (l + 1 < r) {
                int m = l + (r - l) / 2;
                int val = nums[m];
                if (val == target) {
                    return m;
                }
                // } else if (nums[l] < nums[r]) {
                //     if (val < target) {
                //         l = m + 1;
                //     } else {
                //         r = m - 1;    
                //     }
                // } 
                 else {
                    // 6 7 8 1 2 3 4 5    
                    if (val < nums[l]) {
                        if (target > val && target <= nums[r]) {
                            l = m;
                        } else {
                            r = m;
                        }
                    } else {
                    // 6 7 8 9 10 11 1 2 3
                        if (target >= nums[l] && target < val) {
                            r = m;
                        } else {
                            l = m;
                        }
                    }
                }
            }
            
            if (nums[l] == target) {
                return l;
            } else if (nums[r] == target) {
                return r;
            } else {
                return -1;
            }
        }
    
  • 相关阅读:
    ant
    hudson
    【消息队列MQ】各类MQ比较
    日本出行
    使用Eclipse Installer安装Eclipse
    Firebug控制台详解
    浮动
    CSS3
    HTML制作视频简介
    使用I/O流复制指定文件
  • 原文地址:https://www.cnblogs.com/reboot329/p/11068487.html
Copyright © 2011-2022 走看看