【LeetCode热题100(64/100)】搜索旋转排序数组

题目地址: 链接

思路: 可以在纸上模拟出所有 l = mid + 1 的情况,即targetmid右侧的情况,其一定满足以下任一一条:

  1. 严格递增
  2. 右部分有序 (target > nums[mid] && target < nums[l] && nums[mid] <= nums[l])
  3. 左部分有序 (target < nums[mid] && target < nums[l] && nums[mid] >= nums[l])
    其余所有情况targetmid左侧,

最后判断num[l]是否为target即可,若相等,返回查找的序号值,否则返回-1

js 复制代码
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {
    let n = nums.length;
    let [l, r] = [0, nums.length];
    while(l < r) {
        let mid = l + r >> 1;
        if((target > nums[mid] && target < nums[l] && nums[mid] <= nums[l]) // nums[mid] < nums[l]
        || (target < nums[mid] && target < nums[l] && nums[mid] >= nums[l]) // nums[mid] > nums[l]
        || (target > nums[mid] && target > nums[l] && nums[mid] >= nums[l]) // 严格递增
        ) l = mid + 1;
        else r = mid;
    }
    console.log('l ==>', l)
    return nums[l] == target ? l: -1;
};
相关推荐
我叫洋洋1 小时前
C ++ [ hello world ]
c语言·c++·算法
奋发向前wcx2 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
战族狼魂5 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
李剑一5 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH6 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
中达瑞和-高光谱·多光谱6 小时前
1nm到8nm光谱分辨率,你的应用该选哪款光谱相机?
算法·高光谱·高光谱相机
香辣牛肉饭7 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
旖-旎7 小时前
LeetCode 279:完全平方数(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
.徐十三.8 小时前
一篇文章看到最短路径——Dijkstra算法
算法