零 标题:算法(leetode,附思维导图 + 全部解法)300题之(33)搜索旋转排序数组

一 题目描述!

题目描述

二 解法总览(思维导图)

三 全部解法

1 方案1

1)代码:

// 方案1 “无视要求,直接调用 indexOf 等函数”
var search = function(nums, target) {
return nums.indexOf(target);
};

2 方案2

1)代码:

// 方案2 “无视要求,单指针”

// 技巧:
// 1)nums是有序的,然后以某个下标进行翻转。
// 2)通过观察,可以得知 新的nums 走势基本就是 “升序-降序-升序”。 // 思路(整体分2种情况):
// 1)状态初始化
// 2)分 2种 情况 。
// 2.1)若 nums[left] <= target ,则 不断判断 nums[left] === target 。
// 若 相等,则 直接返回 left,否则 left++ 。
// 2.2)若 nums[right] >= target ,则 不断判断 nums[right] === target 。
// 若 相等,则 直接返回 right,否则 right-- 。
var search = function(nums, target) {
// 1)状态初始化
const l = nums.length;
let left = 0,
right = l - 1; // 2)分 2种 情况 。
// 2.1)若 nums[left] <= target ,则 不断判断 nums[left] === target 。
// 若 相等,则 直接返回 left,否则 left++ 。
if (nums[left] <= target) {
while(left < l) {
if (nums[left] === target) {
return left;
}
left++;
}
return -1;
}
// 2.2)若 nums[right] >= target ,则 不断判断 nums[right] === target 。
// 若 相等,则 直接返回 right,否则 right-- 。
else if(nums[right] >= target){
while(right >= 0) {
if (nums[right] === target) {
return right;
}
right--;
}
return -1;
} // 边界case: [4,5,6,7,0,1,2] 3
return -1;
}

3 方案3

1)代码:

// 方案3 “二分查找”。
// 技巧:O(log n)的时间复杂度 --> “二分查找” 。 // 参考:
// 1)https://leetcode-cn.com/problems/search-in-rotated-sorted-array/solution/ji-jian-solution-by-lukelee/
var search = function(nums, target) {
const l = nums.length;
let left = 0,
right = l - 1; while (left < right) {
let mid = parseInt((left + right) / 2);
if ((nums[0] > target) ^ (nums[0] > nums[mid]) ^ (target > nums[mid])) {
left = mid + 1;
}
else {
right = mid;
}
} return left === right && nums[left] === target ? left : -1;
};

33、搜索旋转排序数组 | 算法(leetode,附思维导图 + 全部解法)300题的更多相关文章

  1. Java实现 LeetCode 33 搜索旋转排序数组

    33. 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值, ...

  2. 力扣Leetcode 33. 搜索旋转排序数组

    33. 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值, ...

  3. leetcode 33. 搜索旋转排序数组 及 81. 搜索旋转排序数组 II

    33. 搜索旋转排序数组 问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定 ...

  4. [leetcode] 33. 搜索旋转排序数组(Java)

    33. 搜索旋转排序数组 说实话这题我连题都没有看懂....真是醉了 二分,没意思,直接交了- - https://www.jiuzhang.com/solutions/search-in-rotat ...

  5. 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...

  6. 35、搜索插入位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(35)搜索插入位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "无视要 ...

  7. 31、下一个排列 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(31)下一个排列 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "双指针法 ...

  8. 36、有效的数独 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(36)有效的数独 前言 1)码农三少 ,一个致力于 编写极简.但齐全题解(算法) 的博主. 2)文末附赠 价值上百美刀 资料. 一 ...

  9. 32、最长有效括号 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(32)最长有效括号 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "滑动窗 ...

随机推荐

  1. Noip模拟83 2021.10.26

    T1 树上的数 有手就能在衡中$OJ$上过,但是$WaitingCoders$不行,就是这样 必须使用$O(n)$算法加上大力卡常,思路就是找子树内没更新的更新,更新过了直接$return$ 1 #i ...

  2. IPv6(诞生原因、数据报格式、与IPv4的不同、地址表现形式、基本地址类型、IPv6与IPv4的过渡策略)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105297642 学习课程:<2019王道考研计算机网络> 学习目的 ...

  3. NOIP模拟85(多校18)

    前言 好像每个题目背景所描述的人都是某部番里的角色,热切好像都挺惨的(情感上的惨). 然后我只知道 T1 的莓,确实挺惨... T1 莓良心 解题思路 首先答案只与 \(w\) 的和有关系,于是问题就 ...

  4. Ubuntu 16.04 curl 安装 使用

    curl是利用URL语法在命令行方式显工作的开元文件传输工具. 安装 $ sudo apt install -y curl 使用 $ curl http://www.baidu.com 这是最简单的使 ...

  5. heihei

    adb shell screencap -p /sdcard/p1.pngadb pull /sdcard/p1.png c:\BaiduYunDownloadadb shell rm /sdcard ...

  6. Spring事务不生效问题

    事务未生效可能造成严重的数据不一致性问题,因而保证事务生效至关重要.Spring事务是通过Spring aop实现的,所以不生效的本质问题是spring aop没生效,或者说没有代理成功,所以有必要了 ...

  7. Linux高级命令及mysql数据安装

    Linux系列--高级命令--mysql数据库安装 数据库是用来组织.存储和管理数据的仓库 1.安装数据库:执行命令yum -y install mysql -server 2.启动数据库:安装完毕, ...

  8. 通俗易懂的HTML全知识梳理笔记(第一部分)

    文章目录 什么是HTML 块级元素和内联元素 属性 给`a`元素添加属性 布尔属性 HTML的空白 实体引用: 在HTML中包含特殊字符 head中的元数据 meta元素 在你的站点中增加自定义的图标 ...

  9. .NET Conf 2021 正在进行中,带你看一看微软带来了什么内容

    今年最大的.NET活动正在进行, 可以通过Channel9 https://channel9.msdn.com/Events/dotnetConf/2021 看具体的Session .微软和社区一直在 ...

  10. rabbitMQ报错:Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method:

    1.输入的机器的 IP:15672进入Raabitmq的登陆管理界面 点击admin,进去点击set permission ok, 在运行应该就不会包这个错了