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

技术153. 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值描述
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums =

13.在旋转排序数组中找到最小值。

描述

长度为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-1]。

给你一个数组nums,它的元素值彼此不同。它原本是一个按升序排列的数组,根据上面的情况旋转了几次。请查找并返回数组中最小的元素。

链接

53.求旋转排序数组中的最小值-LEET码(leetcode-cn.com)

解法:二分法

注意需要处理一下细节

1类解决方案{

2 public int FindMIn(int[]nums){ 0

3 int left=0,right=nums . length-1;

4 while(左右){ 0

5 int mid=左(右-左)/2;

7 //如果nums[mid]=nums[right],则表示nums[mid]左侧为上升区间,右侧为无序区间。

8 //那么最小值将是区间无序的区块。

9 if(nums[mid]=nums[right]) {

左10=中1;

11 }

12 /*由于nums[mid]可能是目标值,

13如果最小值是target,则nums[mid]=target,

14直接返回mid,这意味着右边界应该包含mid值*/

15 else {

16右=中;

17 }

18 }

19返回nums[左];

20 }

21 }

1类解决方案{

2 public int FindMIn(int[]nums){ 0

3 int left=0,right=nums . length-1;

4 while(左=右){ 0

5 int mid=左(右-左)/2;

7 //如果nums[mid]=nums[right],则表示nums[mid]左侧为上升区间,右侧为无序区间。

8 //那么最小值将是区间无序的区块。

9 if(nums[mid]=nums[right]) {

左10=中1;

11 }

12 /*由于nums[mid]可能是目标值,

13如果最小值是target,则nums[mid]=target,

14直接返回mid,这意味着右边界应该包含mid值*/

15 else {

16右=中;

17 }

18 }

19返回nums[左];

20 }

21 }

此时(while (left=right)),您需要返回数字[right]

1类解决方案{

2 public int FindMIn(int[]nums){ 0

3 int left=0,right=nums . length-1;

4 while(左=右){ 0

5 int mid=左(右-左)/2;

7 //如果nums[mid]=nums[right],则表示nums[mid]左侧为上升区间,右侧为无序区间。

8 //那么最小值将是区间无序的区块。

9 if(nums[mid]=nums[right]) {

左10=中1;

11 }

12 /*由于nums[mid]可能是目标值,

13如果最小值是target,则nums[mid]=target,

14直接返回mid,这意味着右边界应该包含mid值*/

15 else {

16右=中;

17 }

18 }

19返回nums[右];

20 }

21 }

总结

1.最小值将在中间无序区间的一侧,因此right=mid是起点。

2.while (left right),离开循环时是left=right,此时left=right=mid,可以返回numbers [left]也可以返回numbers[right];

但是当(left=right)时,输出循环是从左向右的,所以它应该返回数字[right]

请看下面的代码输出。

1类解决方案{

2 public int FindMIn(int[]nums){ 0

3 int left=0,right=nums . length-1;

4 while(左=右){ 0

5 int mid=左(右-左)/2;

7 //中文字幕仅供学习交流,严禁用于商业用途。中文字幕仅供学习交流,严禁用于商业用途。中文字幕仅供学习交流,严禁用于商业用途。中文字幕仅供学习交流,严禁用于商业用途。中文字幕仅供学习交流,严禁用于商业用途。中文字幕仅供学习交流,严禁用于商业用途

8/…在这种情况下

9 if(num[中]=num[右])

左10=中1;

11 }

12 /*吴登盛[中]吴登盛,

13目标、数字[中]=目标,

14日中午返国,右日终日终日终日终日终日止*/

15其它[

16右=中;

17 }

18系统。出去。println(' num[mid]: ' num[mid]);

19 }

20系统。出去。println(' num[left]: ' nums[left]);

21系统。出去。println(' num[right]: ' num[right]);

22

23返回n[右];

24 }

25 }

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/126077.html

(0)

相关推荐

  • 香港云服务器安全吗

    技术香港云服务器安全吗对于网站服务器的安全一直都是很多站长需要首先考虑的问题,即便是有高效冗余备份的香港云服务器也可能存在一些潜在的安全问题,那么租用香港云服务器究竟能否保证数据和网站的安全。其实在安全性上很多香港云服务

    礼包 2021年10月26日
  • debug U命令中如何查看指定内存处内容翻译成的指令

    技术debug U命令中如何查看指定内存处内容翻译成的指令debug U命令中如何查看指定内存处内容翻译成的指令,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题

    攻略 2021年11月11日
  • 拓端tecdat|R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率

    技术拓端tecdat|R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率 拓端tecdat|R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节

    礼包 2021年10月28日
  • 基于Maxwell的MySQL数据传输服务整体设计方法教程

    技术基于Maxwell的MySQL数据传输服务整体设计方法教程这篇文章主要介绍“基于Maxwell的MySQL数据传输服务整体设计方法教程”,在日常操作中,相信很多人在基于Maxwell的MySQL数据传输服务整体设计方

    攻略 2021年10月22日
  • python怎么制作自己的一个图形(python图形绘制的代码)

    技术Python 图形绘制详细代码怎么写这篇文章给大家介绍Python 图形绘制详细代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、条形图下面介绍条形图的画法。1.1 代码import

    攻略 2021年12月23日
  • 如何理解jmeter

    技术如何理解jmeter今天就跟大家聊聊有关如何理解jmeter,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1. jmeter环境

    攻略 2021年11月17日