Find Minimum in Rotated Sorted Array

news/2023/12/1 11:50:34

题目

http://www.lintcode.com/en/pr...

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

思路

个人觉得这是一道值得回味的二分法题目。与给出target的二分法搜索比,这道题目的target是未知的,并且array是rotated。我个人是从观察给出的例子入手的。
通过观察这个例子,我们发现以下特征:

  1. 最小值是唯一一个比它左右相邻数字都小的数字

  2. 当中位数比start 和 end 都大的时候,最小值在右边

  3. 当中位数比start 和 end 都小的时候,最小值在左边

  4. 当中位数比start大,比end小的时候,我们进入了sorted的array,最小值也是在左边

那么我们做这道题目的目的,就是通过2,3这两步,进入最小值所在的sorted的array,从而进行第4步。我本人走的弯路是,过于专注于1,从而逻辑变得复杂。其实2,3,和4步就可以帮助我们顺利找到最小值。

代码

class Solution:
    # @param nums: a rotated sorted array
    # @return: the minimum number in the array
    def findMin(self, nums):
        # write your code here
        if nums is None or len(nums) == 0:
            return -1
        start = 0
        end = len(nums) - 1
        while start + 1 < end:
            mid = start + (end - start) / 2
            if nums[mid] > nums[end]:
                start = mid
            elif nums[mid] < nums[start] or (nums[mid] < nums[end] and nums[mid] > nums[start]):
                end = mid
        return nums[start] if nums[start] < nums[end] else nums[end]

体会

这道题目的个人体会就是如果用二分法处理sorted array,核心逻辑在于把已知input分为左右两部分,再从中入手。


http://www.niftyadmin.cn/n/4288945.html

相关文章

Fiddler系列一:Fiddler网络爬虫工具介绍

《Fiddler系列一&#xff1a;Fiddler网络爬虫工具介绍》 前言 Fidder是一款十分强大的抓包软件&#xff0c;在这里本人本着学习好分享交流的态度&#xff0c;去和大家分享自己一遍学习&#xff0c;一遍整理的资料&#xff0c;是将多位大神讲解的优秀知识点以及自己的实践操作…

c# 从零到精通 线程的基本操作

c# 从零到精通 线程的基本操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Threading; namespace Test11 { class Program { static string strCon “Data Sour…

Angular做一个笔记文章管理应用

前言 相信大家在逛技术论坛或者技术博客的时候&#xff0c;都会发现有些写的很好的文章我们想保存下来以便可以重复翻阅和查看&#xff0c;在一些相对大的站点&#xff0c;比如SegmentFault或者掘金都会提供类似收藏这样的功能来帮我们做这个保存的工作&#xff0c;我们以后可以…

Fiddler系列二:Fiddler实战抓取手机端数据

《Fiddler系列二&#xff1a;Fiddler实战抓取手机端数据》 目录 一、序言 二、Fiddler抓包原理 三、Fiddler截获HTTP包用处 四、Fiddler配置 &#xff08;一&#xff09;前提条件 &#xff08;二&#xff09;Fiddler工具配置 &#xff08;三&#xff09;Fiddler手机端配置…

口语1000句

1. I see. 我明白了。2. I quit! 我不幹了!3. Let go! 放手!4. Me too. 我也是。5. My god! 天哪!6. No way! 不行!7. Come on. 來吧(趕快)8. Hold on. 等一等。9. I agree。我同意。10. Not bad. 還不錯。11. Not yet. 還沒。12. See you. 再見。13. Shut up! 閉嘴!14. So lon…

《Sql server 对等发布配置说明》

《Sql server 对等发布配置说明》 目录 《Sql server 对等发布配置说明》 一、对等发布功能条件 二、创建对等发布步骤 三、添加对等拓扑 四、监控 五、外网和内网链接 六、结束语言 一、对等发布功能条件 1.1数据库必须要有复制功能&#xff1a;Express以及以下版本不包…

商务英语文选

a historical review of american business business objectives economic systemeconomics the foundation of businessmixed economypeople from core of business

《离职前注意事项》

目录 一、离职前准备工作 &#xff08;一&#xff09;工作方面准备 &#xff08;二&#xff09;个人方面准备 二、注意事项 三、补充知识点 &#xff08;一&#xff09;五险一金缴纳以及转移 1.1&#xff1a;五险一金有哪些&#xff1f;是否可以转移提现&#xff1f; 1…

[js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)

本文继续接着上文&#xff0c;继续写下webpack.config.js的其他配置用法. 一、把两个文件打包成一个&#xff0c;entry怎么配置? 在上文中的webpack.dev.config.js中&#xff0c;用数组配置entry webpack.dev.config.js文件代码&#xff1a; console.log( __dirname ); //D:\g…

用“心”管理,收获人心

管理者怎样才能收获人心&#xff1f;答案是&#xff1a;用“心”去管理。 只有用“心”管理&#xff0c;才能将心比心&#xff0c;以心换心&#xff0c;从而收获人心。 具体来讲&#xff0c;管理者需要具备以下八种心态。即&#xff1a;尊重之心、期望之心、合作之心、沟通之…

《SQLServer修改服务器、数据库的排序规则》

《SQLServer修改服务器、数据库的排序规则》 目录 《SQLServer修改服务器、数据库的排序规则》 一、修改服务器的排序规则 &#xff08;一&#xff09;数据库服务器排序规则介绍 &#xff08;二&#xff09;数据库服务器排序规则的设置 2.1&#xff1a;查看数据库服务器排…

通过子域名来窃取全局共享的Cookie,间接绕过Uber的单点登录认证

本文讲的是通过子域名来窃取全局共享的Cookie&#xff0c;间接绕过Uber的单点登录认证&#xff0c;Uber使用Amazon CloudFront CDN的本意本来是为终端用户提供低延迟性和高传输速度&#xff0c;增加用户的客户的体验&#xff0c;但没想到&#xff0c;其子域名saostatic.uber.co…

《第一部分:什么是测试》

目录 一、什么是软件测试&#xff08;有哪些分类&#xff09; 二、专业术语 三、为什么要测试、什么是测试 &#xff08;一&#xff09;为什么要测试&#xff1f; &#xff08;二&#xff09;什么是测试&#xff1f; 四、通常软件生命周期包括哪些阶段&#xff1f; 五、典…

手机阅读让我抽空学习

下载Moto-Txt手机阅读器 爽! 总体感觉还不错, 以后搭地铁时有事儿做咯:D

《第二部分:TortoiseSVN的基本概念以及使用方法》

《第二部分&#xff1a;TortoiseSVN的基本概念以及使用方法》 目录 一、SVN的基本概念 二、SVN服务端安装 三、SVN客户端安装 四、SVN的基本操作使用 &#xff08;一&#xff09;TortoiseSVN客户端操作步骤&#xff1a; &#xff08;二&#xff09;SVN中常用的概念和操作…

字帖

中国钢笔书法集锦 中外名人格言钢笔字帖 好久没练钢笔字了, 真怀念过去的日子啊! 在这个计算机泛滥的时代, 大家的手想必都生了吧, 在这里让我们一起重新开始......
最新文章