leetcode 153. 寻找旋转排序数组中的最小值
程序员文章站
2024-03-20 17:32:04
...
-
题目链接 https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/
-
题目描述
-
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组
[0,1,2,4,5,6,7]
可能变为[4,5,6,7,0,1,2]
)。请找出其中最小的元素。
你可以假设数组中不存在重复元素。
-
示例 1:
输入: [3,4,5,1,2] 输出: 1
示例 2:
输入: [4,5,6,7,0,1,2] 输出: 0
-
-
解题思路
- 二分查找。创建两个指针变量low,high,分别指向0, 和nums.size() - 1。取重点m,若nums[m] > nums[high]那么最小元一定位于(m, h],否则,最小元一定位于[low, m]。
-
代码
- python
class Solution: def findMin(self, nums) -> int: l, h = 0, len(nums) - 1 while l < h: m = (l + h) // 2 if nums[m] > nums[h]: l = m + 1 else: h = m return nums[l]
- c++
class Solution { public: int findMin(vector<int>& nums) { int l = 0, h = nums.size() - 1; while (l < h){ int m = l + (h-l) / 2; if (nums[m] > nums[h]) l = m + 1; else h = m; } return nums[l]; } };
- python
上一篇: 后端生成excel并下载的代码摘要
下一篇: Vue问题记录
推荐阅读
-
leetcode 153. 寻找旋转排序数组中的最小值
-
153. 寻找旋转排序数组中的最小值
-
153. 寻找旋转排序数组中的最小值
-
153. 寻找旋转排序数组中的最小值
-
LeetCode 153. 寻找旋转排序数组中的最小值
-
154. 寻找旋转排序数组中的最小值 II
-
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array(C语言)
-
在给定的一维已排序(升序)数组中寻找插入一个元素的位置
-
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array
-
辣鸡刘的Leetcode之旅2【最长公共前缀,有效的括号,合并链表,删除排序数组中的重复项】