代码编织梦想

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]
若旋转 7 次,则可以得到 [0,1,4,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 ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

你必须尽可能减少整个过程的操作步骤。

示例 1:

输入:nums = [1,3,5]
输出:1
示例 2:

输入:nums = [2,2,2,0,1]
输出:0
 

提示:

n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转

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

class Solution {
    public int findMin(int[] nums) {
//		return findMinI(nums);
		return findMinII(nums);
	}

	//方法二:与153题类似,不过要考虑重复值,
	//时间复杂度O(logN),极端情况下为O(N)
	//空间复杂度O(1)
	private int findMinII(int[] nums) {
		int left = 0;
		int right = nums.length - 1;
		while (left < right) {
			int mid = left + (right - left) / 2;
			if (nums[mid] == nums[right]) {
				right--;
				continue;
			}
			if (nums[mid] < nums[right]) {
				right = mid;
			} else {
				left = mid + 1;
			}
		}
		return nums[left];
	}

	//方法一:暴力解法
	//时间复杂度O(N),空间复杂度O(1)
	private int findMinI(int[] nums) {
		for (int num : nums) {
			if (num < nums[0]) {
				return num;
			}
		}
		return nums[0];
	}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Bonbon_wen/article/details/129471075

leetcode-python-154. 寻找旋转排序数组中的最小值 ii_暴躁老哥在线刷题的博客-爱代码爱编程

假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 注意数组中可能存在重复的元素。 示例 1: 输入: [1,3,5] 输出: 1 示例 2: 输入: [2,2,2,0,1] 输出: 0 说明: 这道题是 寻找旋转排

leetcode-python-153. 寻找旋转排序数组中的最小值_暴躁老哥在线刷题的博客-爱代码爱编程

假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [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 来源:力扣(L

leetcode刷题(71)——153. 寻找旋转排序数组中的最小值-爱代码爱编程

一、题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [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

C/C++编程题刷题:leetcode153. 寻找旋转排序数组中的最小值-爱代码爱编程

153. 寻找旋转排序数组中的最小值 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [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,

​LeetCode刷题实战154:寻找旋转排序数组中的最小值 II-爱代码爱编程

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家聊的问题叫做 寻找旋转排序数组中的最小值 II,我们先来看题面: https://leetcode-cn.com/problems/find-min

LeetCode刷题日记2021-4-8/153. 寻找旋转排序数组中的最小值/二分查找法-爱代码爱编程

仅供自己学习记录 LeetCode刷题日记2021-4-8 题目描述: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 4 次,则可以得到 [0,1,2,4,5

LeetCode刷题笔记-寻找旋转排序数组中的最小值-爱代码爱编程

寻找旋转排序数组中的最小值 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 4 次,则可以得到 [0,1,2,4,5,6,7] 注意,数组 [a[0], a[1],

LeetCode刷题之路:153. 寻找旋转排序数组中的最小值-爱代码爱编程

如果帮助到您,还请点个关注吧,hahaha 已知一个长度为 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[

LeetCode刷题之路:154. 寻找旋转排序数组中的最小值 II-爱代码爱编程

如果帮助到您,还请点个关注吧,hahaha 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7] 注意,数组 [a[

【LeetCode刷题】154. 寻找旋转排序数组中的最小值 II-爱代码爱编程

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7] 注意,数组 [a[0], a[1], a[2], ..., a[n

LeetCode No.154 寻找旋转排序数组中的最小值 II(每日一题)-爱代码爱编程

大家好!今天给大家带来的是力扣每日一题第154题。 原文地址:http://leanote.com/blog/post/606faaeeab644139cf0001a6 连续刷题的小伙伴们肯定已经做了三天一模一样的题目了ψ(`∇´)ψ 还没有做过的小伙伴可以看到 昨天的题目:http://leanote.com/blog/post/606e5b31ab64

【LeetCode每日一题】154. 寻找旋转排序数组中的最小值 II-爱代码爱编程

【LeetCode每日一题】154. 寻找旋转排序数组中的最小值 II 今日题目154题,每日一题微信交流群可以点击右下角:合作转载->联系我,备注:刷题,拉你入群。 题目: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能

154. 寻找旋转排序数组中的最小值 II-爱代码爱编程

154. 寻找旋转排序数组中的最小值 II LeetCode刷题打卡第013天 (第2篇)20210722 题目链接 思路: 题目类似于153,同时类似于84题因为旋转前的数组为非递减的,因此需要分为三种情况进行讨论 代码 class Solution { public: int findMin(vector<int>

leetcode刷题153. 寻找旋转排序数组中的最小值(Java带注释)二分查找-爱代码爱编程

leetcode刷题153. 寻找旋转排序数组中的最小值Medium 1.题目描述2.解法2.1 思路2.2 Java代码(带注释) 1.题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以

LeetCode 刷题系列 153. 寻找旋转排序数组中的最小值-爱代码爱编程

题目: 已知一个长度为 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], ...

leetcode刷题 153.寻找旋转排序数组中的最小值_leecode 寻找极小值-爱代码爱编程

题目分析: 解法一: 该题是用来寻找最小值,我们可以直接用数组求最小值的方法来进行求解,但是我们观察到此题数组是一个 旋转数组,只要除第一位外后面每一位比第一位小,那么它就是最小值,否则第一位就是最小值 class

leetcode——153. 寻找旋转排序数组中的最小值-爱代码爱编程

概述 题目链接 局部有序数组内查找最小元素,数组内值互不相同 分析 要求 O