| 寻找旋转排序数组中的最小值

已知一个长度为 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 ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。
示例 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 次旋转

题解

class Solution:def findMin(self, nums: List[int]) -> int:length = len(nums)first = 0last = length - 1min_val = 5001while last >= first:mid = first + (last - first) // 2# 现在有序区间 当满足nums[first] <= num[mid]时, mid索引的左侧元素为有序区间if nums[first] <= nums[mid]:if nums[first] < min_val:min_val = nums[first]first = mid + 1# 否则 mid 索引右侧元素为有序区间else:if nums[mid] < min_val:min_val = nums[mid] last = mid - 1return min_val

python 寻找旋转排序数组中的最小值相关推荐

  1. 算法-------寻找旋转排序数组中的最小值

    题目 寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ).请找出其中最小的元素 ...

  2. 153. 寻找旋转排序数组中的最小值 golang

    153. 寻找旋转排序数组中的最小值 golang Me func findMin(nums []int) int {if len(nums) < 2 {return nums[0]}i, j ...

  3. LeetCode 154. 寻找旋转排序数组中的最小值 II (二分)

    154. 寻找旋转排序数组中的最小值 II 题意 给定一个包含重复元素的升序旋转数组 找出旋转数组的最小值 二分法 class Solution {public int findMin(int[] n ...

  4. LeetCode 153. 寻找旋转排序数组中的最小值(二分)

    153. 寻找旋转排序数组中的最小值 题意 给定一个无重复元素的升序旋转数组 找出旋转数组的最小值 二分法 mid是向下取整:left相对于mid移动 只要中值小于nums[right],说明最小值一 ...

  5. LeetCode 153. 寻找旋转排序数组中的最小值【c++/java详细题解】

    目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1, ...

  6. Leetcode 153. 寻找旋转排序数组中的最小值 解题思路及C++实现

    解题思路:二分查找 使用二分查找来寻找最小值. left,right,mid分别代表数组中最左边.中间.最右边的元素.这三个数字在旋转数组中的大小比较总共有三种情况. 1.数组是升序的,即 nums[ ...

  7. php旋转数组找出最小的,LeetCode 153 寻找旋转排序数组中的最小值

    链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ...

  8. 领扣(LeetCode)寻找旋转排序数组中的最小值 个人题解

    假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 请找出其中最小的元素. 你可以假设数组中不存在重 ...

  9. leetcode 154. 寻找旋转排序数组中的最小值 II(二分查找)

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

最新文章

  1. Redis学习之路(一)--下载安装redis
  2. [UI自动化]:控制浏览器操作
  3. gan 总结 数据增强_白话GAN及其解决小样本问题的探讨
  4. ORA-24247: network access denied by access control list (ACL)
  5. 如何设计Lighthouse定位接收电路
  6. ECSTORE 关于FILTER条件所代表的含义
  7. 吃下去的东西老是往上翻上来_这间日日火爆的面馆,当年海藻带宋思明吃过
  8. 仿微博国际版首页点击显示分组列表(popupwindow悬浮阴影效果)
  9. 刘光聪 | TensorFlow:揭示多语言编程的奥秘
  10. ES6/06/ES6简介,ES6新增语法,let声明变量,const声明常量,var,let和const总结,数组解构,对象解构,箭头函数,剩余参数
  11. 小tips:JS语法之标签(label)
  12. C++/C高级数据类型
  13. yum与apt-get的区别以及两者更新源(阿里/网易【163】)
  14. C语言炫酷的文件操作
  15. 关于USGS 共享光谱库读取问题
  16. python爬取数据教程_python爬虫爬取网页数据并解析数据
  17. deflate与gzip
  18. java计算机毕业设计bs架构实习管理系统MyBatis+系统+LW文档+源码+调试部署
  19. rancher部署安装好后,无法部署pod
  20. Mobile开发(绘制背景图片)

热门文章

  1. 158. Leetcode 121. 买卖股票的最佳时机 (贪心算法-股票题目)
  2. 39. Leetcode 110. 平衡二叉树 (二叉树-二叉树性质)
  3. 不用任何比较判断找出两个数中较大的数
  4. python编程基础(二)~python安装设置 和 pip packages安装与使用
  5. 文计笔记2: 计算机硬件知识
  6. R语言应用实战-基于R的因子分析(以上市公司数据为例)
  7. 数据库性能调优之后,进一步的验证和分析
  8. 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
  9. 【LeetCode从零单排】No100 Same Tree No101 Symmetric Tree
  10. 主流的自动化运维工具