子墨的博客

总得让实力配上野心


  • 首页

  • 标签125

  • 分类16

  • 归档258

  • 关于

  • 搜索

力扣每日一题 2021/4/7

置顶 发表于 2021-04-07 更新于 2021-04-21 分类于 数据结构与算法 阅读次数:
本文字数: 2k 阅读时长 ≈ 2 分钟

题目:81. 搜索旋转排序数组 II

难度:中等

已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。

在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ** ,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 **从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4] 。

给你 旋转后 的数组 nums 和一个整数 target ,请你编写一个函数来判断给定的目标值是否存在于数组中。如果 nums 中存在这个目标值 target ,则返回 true ,否则返回 false 。

示例 1:

1
2
输入:nums = [2,5,6,0,0,1,2], target = 0
输出:true

示例 2:

1
2
输入:nums = [2,5,6,0,0,1,2], target = 3
输出:false

提示:

  • 1 <= nums.length <= 5000
  • -104 <= nums[i] <= 104
  • 题目数据保证 nums 在预先未知的某个下标上进行了旋转
  • -104 <= target <= 104

进阶:

  • 这是 搜索旋转排序数组 的延伸题目,本题中的 nums 可能包含重复元素。
  • 这会影响到程序的时间复杂度吗?会有怎样的影响,为什么?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

二分查找

解题代码

遍历查找

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public boolean search(int[] nums, int target) {
boolean ans = false;
for (int i : nums) {
if (i == target) {
return true;
}
}
return ans;
}
}

二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public boolean search(int[] nums, int target) {
return binarySearch(nums,target,0,nums.length - 1);
}

private boolean binarySearch(int[] nums,int t,int l,int r) {
if (l >= r) {
return nums[l] == t;
}
int m = (l + r) / 2;
if (nums[m] == t) {
return true;
} else if (nums[m] > t) {
if (nums[l] >= nums[r]) {
return binarySearch(nums,t,l,m) || binarySearch(nums,t,m + 1,r);
} else {
return binarySearch(nums,t,l,m);
}
} else {
if (nums[l] >= nums[r]) {
return binarySearch(nums,t,l,m) || binarySearch(nums,t,m + 1,r);
} else {
return binarySearch(nums,t,m + 1,r);
}
}
}
}
相关文章
  • 力扣每日一题 2021/4/9
  • 力扣每日一题 2021/4/8
  • 力扣每日一题 2021/3/30
  • 力扣每日一题 2021/2/3
  • 力扣每日一题 2020/12/1
觉得不错,打赏一下
子墨 微信支付

微信支付

子墨 支付宝

支付宝

  • 本文作者: 子墨
  • 本文链接: https://blog.zimo.wiki/posts/72c6e4e2/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
java 力扣 算法 题解 数组 二分查找
力扣每日一题 2021/4/6
力扣每日一题 2021/4/8
  • 文章目录
  • 站点概览
子墨

子墨

子墨的博客
258 日志
16 分类
125 标签
RSS
GitHub E-Mail CSDN QQ Gitee
友情链接
  • 高正杰的博客

Tag Cloud

  • 360加固1
  • 8076
  • HttpCanary1
  • JavaScript2
  • Jupyter Notebook1
  • Kruskal算法1
  • TreeMap1
  • bfs9
  • c++1
  • centos1
  • cuda1
  • c语言6
  • deepin1
  • dfs19
  • dns2tcp1
  • dp1
  • fiddler4
  • floyd1
  • hexo2
  • hook1
  • html1
  • jar1
  • java229
  • jetbrains1
  • linux3
  • linux server1
  • markdown1
  • ms4
  • nginx1
  • nodejs1
  • python2
  • pytorch1
  • tesseract-ocr1
  • ubantu1
  • virtualenvwrapper-win1
  • war1
  • windows2
  • windows server1
  • 个人博客2
  • 二分查找6
  • 二叉搜索树7
  • 二叉树27
  • 今日校园3
  • 代理1
  • 代码托管1
  • 代码雨1
  • 伪装位置1
  • 位运算6
  • 几何1
  • 分治算法3
  • 初试排名1
  • 刷recovery1
  • 前缀树1
  • 力扣227
  • 动态规划9
  • 劫持1
  • 单调栈3
  • 单调队列1
  • 双指针15
  • 双系统1
  • 哈希表15
  • 回溯算法15
  • 图6
  • 堆1
  • 字典树1
  • 字符串24
  • 小爱课程表1
  • 小米61
  • 常识1
  • 平衡二叉树2
  • 并查集11
  • 广度优先搜索9
  • 归并排序1
  • 志愿项目1
  • 快捷键冲突1
  • 成信大1
  • 找规律1
  • 抓包4
  • 折腾1
  • 拓扑排序1
  • 挖矿木马1
  • 排序13
  • 数学7
  • 数组59
  • 数论1
  • 智慧成信1
  • 暴力枚举3
  • 服务器1
  • 机器学习2
  • 极客1
  • 栈8
  • 树22
  • 模拟6
  • 欧拉路径1
  • 正则表达式1
  • 水题2
  • 油猴脚本1
  • 深度优先搜索19
  • 滑动窗口10
  • 爬虫3
  • 环境搭建1
  • 直播服务器1
  • 科普1
  • 程序综合设计6
  • 算法227
  • 终端1
  • 编译1
  • 考研8
  • 脑经急转弯1
  • 蓝桥杯1
  • 解锁bl1
  • 记忆化搜索4
  • 贪心1
  • 贪心算法21
  • 运维1
  • 迭代器1
  • 逆向3
  • 递归5
  • 部署1
  • 钉子户1
  • 链表13
  • 队列1
  • 题解227
  • 黑客帝国1
  • 黑苹果1
  1. 1. 题目:81. 搜索旋转排序数组 II
  2. 2. 解题思路
  3. 3. 解题代码
蜀ICP备18029083号 © 2019 – 2021 子墨 | 站点总字数: 571k | 站点阅读时长 ≈ 8:39
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
载入网站运行时间中...
|
0%