当前位置:网站首页>LeetCode_二分搜索_中等_153.寻找旋转排序数组中的最小值
LeetCode_二分搜索_中等_153.寻找旋转排序数组中的最小值
2022-07-07 11:27:00 【小城老街】
1.题目
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。
给你一个元素值互不相同的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的最小元素 。
你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。
示例 1:
输入:nums = [3,4,5,1,2]
输出:1
解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。
示例 2:
输入:nums = [4,5,6,7,0,1,2]
输出:0
解释:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。
示例 3:
输入:nums = [11,13,15,17]
输出:11
解释:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。
提示:
n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
nums 中的所有整数互不相同
nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array
2.思路
(1)二分搜索
思路参考本题官方题解。
3.代码实现(Java)
//思路1————二分搜索
class Solution {
public static int findMin(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
//如果 nums[left] < nums[right],则说明 nums[left...right] 之间的元素是升序的,所以最小元素就是 nums[left]
if (nums[left] < nums[right]) {
return nums[left];
}
int mid = left + (right - left) / 2;
if (nums[mid] < nums[right]) {
right = mid;
} else {
left = mid + 1;
}
}
return nums[right];
}
}
边栏推荐
- Cinnamon Applet 入门
- 一文读懂数仓中的pg_stat
- Scripy tutorial classic practice [New Concept English]
- Practical example of propeller easydl: automatic scratch recognition of industrial parts
- Summary of import, export, backup and recovery of mongodb
- Shortcut key of Bash
- Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
- 【无标题】
- Mongodb slice summary
- Japanese government and enterprise employees got drunk and lost 460000 information USB flash drives. They publicly apologized and disclosed password rules
猜你喜欢
关于 appium 如何关闭 app (已解决)
TPG x AIDU|AI领军人才招募计划进行中!
COSCon'22 社区召集令来啦!Open the World,邀请所有社区一起拥抱开源,打开新世界~
Japanese government and enterprise employees got drunk and lost 460000 information USB flash drives. They publicly apologized and disclosed password rules
MATLAB中polarscatter函数使用
DETR介绍
Aosikang biological sprint scientific innovation board of Hillhouse Investment: annual revenue of 450million yuan, lost cooperation with kangxinuo
关于 appium 启动 app 后闪退的问题 - (已解决)
[Presto profile series] timeline use
Practical example of propeller easydl: automatic scratch recognition of industrial parts
随机推荐
MongoDB命令汇总
Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
Why can basic data types call methods in JS
MATLAB中polarscatter函数使用
Vscode编辑器ESP32头文件波浪线不跳转彻底解决
Go语言学习笔记-结构体(Struct)
Practical example of propeller easydl: automatic scratch recognition of industrial parts
记一次 .NET 某新能源系统 线程疯涨 分析
TPG x AIDU|AI领军人才招募计划进行中!
Analysis of DHCP dynamic host setting protocol
Read PG in data warehouse in one article_ stat
ISPRS2021/遥感影像云检测:一种地理信息驱动的方法和一种新的大规模遥感云/雪检测数据集
Pay close attention to the work of safety production and make every effort to ensure the safety of people's lives and property
COSCon'22 社区召集令来啦!Open the World,邀请所有社区一起拥抱开源,打开新世界~
Common text processing tools
PACP学习笔记三:PCAP方法说明
基于鲲鹏原生安全,打造安全可信的计算平台
About how appium closes apps (resolved)
Unity 构建错误:当前上下文中不存在名称“EditorUtility”
数字ic设计——SPI