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;
            }
        }
    
  • 相关阅读:
    socket:套接字
    hashlib 加密
    面向对象总结
    类的内置方法
    反射
    类中的三个装饰器方法
    text
    模块
    练习1
    内置函数
  • 原文地址:https://www.cnblogs.com/reboot329/p/11068487.html
Copyright © 2011-2022 走看看