153. 寻找旋转排序数组中的最小值(中等)

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

  • 1. 题目描述
  • 2.详细题解
  • 3.代码实现
    • 3.1 Python
    • 3.2 Java

1. 题目描述

题目中转:153. 寻找旋转排序数组中的最小值
在这里插入图片描述
在这里插入图片描述

2.详细题解

    如果不考虑 O ( l o g n ) O(log n) O(logn)的时间复杂度,直接 O ( n ) O(n) O(n)时间复杂度的扫描遍历一次即可。
    严格升序数组,即不存在相同元素的两个值。如果不旋转则最小的数值即为第一个(索引为0)的数值,数组旋转了1到n次,寻找数组中最小的元素,这道题是二分查找的变型题。
  假定最小值为 m i n x min_x minx,数组旋转后,假定结尾最后一个值为 t a i l tail tail,对于最小值 m i n x min_x minx,其右边的元素均小于 t a i l tail tail,而其左边的元素均大于 t a i l tail tail的值,可以利用该性质使用二分查找算法。
  具体算法如下:

  • Step1:初始化:两个指针 l e f t left left r i g h t right right,分别指向数组的起始和结束位置;
  • Step2:计算中间元素的索引: m i d = ( l e f t + r i g h t ) / 2 mid = (left + right) / 2 mid=(left+right)/2
  • Step3:如果 n u m s [ m i d ] < n u m s [ r i g h t ] nums[mid] < nums[right] nums[mid]<nums[right],说明区间 ( m i d , r i g h t ] (mid, right] (mid,right]均为最小值右边的元素,故移除,更新 r i g h t = m i d right=mid right=mid,而 m i d mid mid可能为最小值,因此更新区间时不能舍弃 m i d mid mid
  • Step4:否则(即 n u m s [ m i d ] > = n u m s [ r i g h t ] nums[mid]>=nums[right] nums[mid]>=nums[right]),说明区间 [ l e f t , m i d ] [left,mid] [left,mid]均为最小值左边的元素,故移除,更新 l e f t = m i d + 1 left=mid+1 left=mid+1,此时 m i d mid mid值不可能为最小值,因为其已经大于了结尾值,故可舍弃 m i d mid mid;
  • Step5:当指针left小于right时,重复步骤Step2_Step5;
  • Step6:否则循环结束,返回 n u m s [ l e f t ] nums[left] nums[left]

3.代码实现

3.1 Python

class Solution:def findMin(self, nums: List[int]) -> int:left, right = 0, len(nums) - 1while left < right:mid = (left + right) // 2if nums[mid] < nums[right]:right = midelse:left = mid + 1return nums[left]

在这里插入图片描述

3.2 Java

class Solution {public int findMin(int[] nums) {int left = 0, right = nums.length - 1;while (left <right){int mid = (left + right) / 2;if (nums[mid] < nums[right]){right = mid;}else{left = mid + 1;}}return nums[left];}
}

在这里插入图片描述

  执行用时不必过于纠结,对比可以发现,对于python和java完全相同的编写,java的时间一般是优于python的;至于编写的代码的执行用时击败多少对手,执行用时和网络环境、当前提交代码人数等均有关系,可以尝试完全相同的代码多次执行用时也不是完全相同,只要确保自己代码的算法时间复杂度满足相应要求即可,也可以通过点击分布图查看其它coder的code。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hugging Face全面拥抱LangChain:全新官方合作包】

文末有福利&#xff01; ❝ 最近Hugging Face官宣发布langchain_huggingface&#xff0c;这是一个由 Hugging Face 和 LangChain 共同维护的 LangChain 合作伙伴包。这个新的 Python 包旨在将 Hugging Face 最新功能引入 LangChain 并保持同步。 通过Hugging Face官方包的加持&…

14-15 为什么我们现在对阅读如此难以接受

写出来感觉很奇怪&#xff0c;但最近我感觉自己失去了阅读能力。长篇文本对我来说尤其具有挑战性。句子很难读完。更别提章节了。章节有很多段落&#xff0c;而段落又由许多句子组成。 啊。 即使在极少数情况下&#xff0c;我读完了一章&#xff0c;下一页上已经有另一章等着…

有sdwan可以不用专线吗?sdwan和专线的区别优势

SD-WAN&#xff08;Software-Defined Wide Area Network&#xff0c;软件定义广域网&#xff09;确实可以在很大程度上替代传统的专线连接&#xff0c;尤其是在追求成本效益和网络灵活性的场景下。SD-WAN的核心优势在于其智能化和自动化的能力&#xff0c;这使得它能够优化数据…

华清远见人工智能课程:项目优势助力,学习更高效!

在人工智能飞速发展的今天&#xff0c;学习人工智能成为新的高薪赛道。我们都知道人工智能的学习离不开项目练手&#xff0c;只有通过实际项目的操作&#xff0c;才能真正掌握人工智能的核心技能。但遗憾的是&#xff0c;很多人工智能课程只注重理论知识的传授&#xff0c;缺乏…

本地文件上传Github的方法

本文仅用于个人回忆本地文件上传GitHub方法&#xff0c;使用HTTP上传而不是SSH&#xff0c;其余文件已配置完成&#xff0c;如果你和我一样&#xff0c;那么请往下看&#xff0c;这条博客不说废话。 Step1 选择需要上传的文件&#xff0c;右键选择Git Bash Here Step2 创建一…

GAMES104:04游戏引擎中的渲染系统1:游戏渲染基础-学习笔记

文章目录 概览&#xff1a;游戏引擎中的渲染系统四个课时概览 一&#xff0c;渲染管线流程二&#xff0c;了解GPUSIMD 和 SIMTGPU 架构CPU到GPU的数据传输GPU性能限制 三&#xff0c;可见性Renderable可渲染对象提高渲染效率Visibility Culling 可见性裁剪 四&#xff0c;纹理压…

电路模型和电路定律

电路---为了某种需要由某些电工设备或元件按一定方式组合起来的电流的通路 实际电路的两个作用 1.电能的传输&#xff0c;分配和转换 2.传递和处理信号 电路中的几个基本概念 激励---电源或信号源的电压或电流&#xff0c;也称为输入 响应---由激励在电路各部分产生的电流…

怎么参与场外期权?

今天期权懂带你了解怎么参与场外期权&#xff1f; 目前个人投资者暂时还不能直接参与场外个股期权&#xff0c;因为场外个股期权现在只能机构来进行交易。 所以个人投资者目前只能通过机构通道来进行操作&#xff0c;类似期权懂&#xff0c;找到期权懂经理&#xff0c;然后通…

手机删除的照片怎么找回?3个急救指南,让你重新拥有

一不小心手滑&#xff0c;手机里的几百张珍贵照片就消失了&#xff01;是不是心如刀割&#xff0c;感觉错过了几个亿&#xff1f;手机删除的照片怎么找回&#xff1f;别担心&#xff0c;小菜一碟&#xff0c;恢复照片就像打游戏一样&#xff0c;只要掌握正确的“攻略”&#xf…

AI大模型时代来临:企业如何抢占先机?

AI大模型时代来临:企业如何抢占先机? 2023年,被誉为大模型元年,AI大模型的发展如同一股不可阻挡的潮流,正迅速改变着我们的工作和生活方式。从金融到医疗,从教育到制造业,AI大模型正以其强大的生成能力和智能分析,重塑着行业的未来。 智能化:企业核心能力的转变 企…

世界智能产业博览会开幕 - 天空卫士汽车行业方案入选优秀案例

6月20日&#xff0c;以“智行天下、能动未来”为主题的2024世界智能产业博览会在国家会展中心&#xff08;天津&#xff09;开幕。主席向博览会致贺信并指出&#xff1a;中国高度重视人工智能发展&#xff0c;积极推动互联网、大数据、人工智能和实体经济深度融合&#xff0c;培…

[Python学习篇] Python函数

定义函数 语法&#xff1a;使用关键字 def def 函数名(参数): 代码1 代码2 ...... 调用函数 语法&#xff1a; 函数名(参数) 注意&#xff1a;不同的需求&#xff0c;参数可有可无。在Python中&#xff0c;函数必须先定义后使用 示例&#xff1a; # 定义函数 d…

csdn如何建立专栏,并且把已发布的文章,放到专栏里

不会在csdn上建立专栏&#xff0c;管理自己的博客&#xff1f; 建立了专栏&#xff0c;不知道该怎么放入文章&#xff1f; 本文将一步步带你解决这些问题。 我是蚊子码农&#xff0c;欢迎各位的点赞、关注和收藏&#xff0c;有了你们的激励&#xff0c;我会带来更好的作品。…

聚焦 Navicat 17 新特性 | 让用户界面交互更丝滑

随着 Navicat 17 的发布&#xff0c;引起业界热烈反响和深入讨论。早前&#xff0c;我们介绍了 Navicat 17 《模型设计创新与优化​​​​​​​》与《查询与配置》的新特性。此外&#xff0c;Navicat 在用户界面交互方面进行了显著优化&#xff0c;新增了一系列实用的功能&…

《后端程序猿 · 基于 Lettuce 实现缓存容错策略》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;如需交流&#xff…

机器学习辅助的乙醇浓度检测

目录 1.为什么要机器学习 2. 神经网络一般组成 3.BP神经网络工作过程 4.评价指标 5.实操代码 1.为什么要用机器学习 人工分析大量的谐振模式&#xff0c;建立各种WGM的响应与未知目标之间的关系&#xff0c;是一个很大的挑战。机器学习(ML)能够自行识别全谱的全部特征。作为…

如何在Lazada平台快速出单?测评助力商家突破销量瓶颈

Lazada在短短的几年里已经发展成了东南亚地区最大的在线购物网站之一 &#xff0c;很多商家也想要在这样一个大的跨境平台上发展。那么&#xff0c;对于希望在Lazada平台上大展拳脚的商家而言&#xff0c;出单是否容易呢? ​一、Lazada出单容易吗? Lazada出单的难易程度并非…

漫步5G-A City,一份独属于上海的浪漫

作家亨利詹姆斯曾写道&#xff0c;“城市漫步&#xff0c;让我接触到了这个世界上最好的东西”。 用漫无目的地行走&#xff0c;来体验和观察一座城市&#xff0c;上海凭借丰富多元的文化特质&#xff0c;成为citywalk这种浪漫生活方式的流行地。 无论你是漫步在美术馆、画廊林…

数据抓取技术在视频内容监控与快速读取中的应用

引言 在数字化时代&#xff0c;视频内容的快速读取和监控对于内容提供商来说至关重要。思通数科的OPEN-SPIDER抓取技术为这一需求提供了高效的解决方案。 OPEN-SPIDER技术概述 OPEN-SPIDER是思通数科开发的一种先进的数据抓取技术&#xff0c;它能够&#xff1a; - 高效地从各…

Stable Diffusion【基础篇】:降噪强度(denoising strength)

提到降噪强度&#xff08;denoising strength&#xff09;&#xff0c;大家一定不会陌生&#xff0c;这个参数是图生图中最关键的参数之一。今天在Stable Diffusion Art网站看到一篇介绍降噪强度&#xff08;denoising strength&#xff09;的文章&#xff08;地址&#xff1a;…