音乐
音乐
暂未播放
0:00/0:00
暂无歌词
LeetCode | 寻找旋转排序数组中的最小值
515 字
3 分钟
LeetCode | 寻找旋转排序数组中的最小值
分类:二分查找 / 数组
题目#
已知一个长度为 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]2输出:1讲解#
这题和 搜索旋转排序数组 很像,都是在旋转后的升序数组里做二分。
区别是:33 要找 target 的位置,这题只要找最小值。
最小值一定在旋转断点那里。比如 [4,5,6,7,0,1,2] 里,0 就是断点后的第一个数。
判断方向时,可以比较 nums[mid] 和 nums[right]。
如果 nums[mid] > nums[right],说明 mid 在左边较大的那段里,最小值一定在 mid 右边,所以 left = mid + 1。
如果 nums[mid] <= nums[right],说明从 mid 到 right 这一段是有序的,最小值可能就是 mid,也可能在 mid 左边,所以 right = mid。
循环结束时,left == right,这个位置就是最小值的位置。
复杂度#
- 暴力做法:
- 时间复杂度:
O(n) - 空间复杂度:
O(1)
- 时间复杂度:
- 二分查找:
- 时间复杂度:
O(log(n)) - 空间复杂度:
O(1)
- 时间复杂度:
代码#
源码#
1from typing import List2
3
4class Solution:5 def findMin(self, nums: List[int]) -> int:6 left = 07 right = len(nums) - 18
9 while left < right:10 mid = (left + right) // 211 if nums[mid] > nums[right]:12 left = mid + 113 else:14 right = mid15
16 return nums[left]测试#
1from src.python._153_Find_Minimum_in_Rotated_Sorted_Array import Solution2
3
4sol = Solution()5
6assert sol.findMin([3, 4, 5, 1, 2]) == 17assert sol.findMin([4, 5, 6, 7, 0, 1, 2]) == 08assert sol.findMin([11, 13, 15, 17]) == 119assert sol.findMin([1]) == 110
11print("PASS")参考资料#
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LeetCode | 寻找旋转排序数组中的最小值
https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/最后更新于 2026-08-08
部分内容可能已过时
相关文章智能推荐
1
LeetCode | 搜索旋转排序数组
LeetCodeLeetCode 搜索旋转排序数组题解:在旋转数组中判断有序半区,再用二分缩小范围。
2
LeetCode | 寻找两个正序数组的中位数
LeetCodeLeetCode 寻找两个正序数组的中位数题解:用二分查找切分位置,在 O(log(min(m,n))) 时间内求中位数。
3
LeetCode | 在排序数组中查找元素的第一个和最后一个位置
LeetCodeLeetCode 在排序数组中查找元素的第一个和最后一个位置题解:复用 lower_bound,两次二分定位左右边界。
4
LeetCode | 搜索插入位置
LeetCodeLeetCode 搜索插入位置题解:用二分查找在升序数组中找到目标位置或插入位置。
5
LeetCode | 搜索二维矩阵
LeetCodeLeetCode 搜索二维矩阵题解:把矩阵看作一维数组做二分,或者先定位行再二分查找。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
66
分类
16
标签
93
总字数
477,284
运行时长
0 天
最后活动
0 天前
最新动态



