zoukankan      html  css  js  c++  java
  • 33. 搜索旋转排序数组【中等】

    leetcode:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/

    方法一:

    有序数组查找,使用二分

    进行二分,l、r、mid,两边必有一边是有序的

    1、如果nums[l] <= nums[mid - 1],说明左侧有序

    (1)、如果target在左侧,在查找范围缩小到左侧

    (2)、如果target不在左侧,则一定在右侧,查找范围缩小到右侧

    2、否则右侧一定有序

      (1)、如果target在右侧,在查找范围缩小到右侧

    (2)、如果target不在右侧,则一定在左侧,查找范围缩小到左侧

    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number}
     */
    var search = function(nums, target) {
        let l = 0;
        let r = nums.length - 1;
        let mid = -1;
        while (l <= r) {
            // 向上取整,避免l等于mid的情况
            mid = Math.ceil((l + r) / 2);
            console.log('l = ', l, ' r = ', r, ' mid = ', mid)
            if (target === nums[mid]) return mid;
            
            if (nums[l] <= nums[mid - 1]) {
                // 左侧有序
                if (target >= nums[l] && target <= nums[mid - 1]) {
                    r = mid - 1;
                } else {
                    l = mid + 1;
                }
            } else {
                // 右侧有序
                if (target >= nums[mid + 1] && target <= nums[r]) {
                    l = mid + 1;
                } else {
                    r = mid - 1;
                }
            }
        }
        return -1;
    };

    -----smile

  • 相关阅读:
    4.数据库表相关操作
    2.快速创建springboot项目 连pom文件里面的配置都不用配了
    1.开始Springboot 基本配置和helloworld
    mysql 对数据库操作的常用sql语句
    mysql简单操作
    1.开始Spring
    关于java中的异常
    关于maven
    npm相关知识点
    git源代码管理工具操作步骤
  • 原文地址:https://www.cnblogs.com/Walker-lyl/p/14629085.html
Copyright © 2011-2022 走看看