当前位置: 首页 > news >正文

网站建设发布雅安移动网站建设

网站建设发布,雅安移动网站建设,建设网站建设什么征琴,四平网站公司Day 86 题目描述思路 我们考虑一下如果选择数组会出现的情况: 旋转n次,等于没转,那么第一个元素就是最小的旋转1-n-1次,那么第一个元素肯定是大于最后一个元素的(这个很重要) 我们基于以上的思路&#xff0…

Day 86

题目描述

在这里插入图片描述

思路

我们考虑一下如果选择数组会出现的情况:

  1. 旋转n次,等于没转,那么第一个元素就是最小的
  2. 旋转1-n-1次,那么第一个元素肯定是大于最后一个元素的(这个很重要)
    我们基于以上的思路,那么判断一个数组是否旋转的条件就很明确了,比较第一个元素和最后一个元素的大小。
    好,这里如果没转直接返回第一个元素就好。
    那么发生旋转了,我们就考虑如何二分查找
    二分查找的先决条件是有序,那么哪里有序呢?此时数组是由两段有序数列组成的,第一段肯定不存在我们要的最小值,第二段有序的数组的第一个元素就是最小值

那么我们就开始二分查找,此时数组是由两段有序数列组成的,前一段我们肯定找不到最小的值,我们的mid如果在这个区间(比较num[mid]和最后一元素的值),我们就得让他向前走,所以beg=mid+1,让他快速的进入第二段有序数列中去。

此时我们到了第二段有序的数列,但可能mid和beg是处于第二段有序数列的中间,我们判断这个mid是否是周围的最小值,如果不是,那么我们需要beg和mid向前移动,于是beg–,end=mid
此时由于我们要比较mid左右的值,防止越界 特判一下第一个元素和最后一个元素

class Solution {public int findMin(int[] nums) {int beg=0;int end=nums.length-1;int min=nums[nums.length-1];if(nums[nums.length-1]>=nums[0]){return nums[0];//说明没有旋转}while(beg<=end){int mid=beg+(end-beg)/2;if(nums[mid]>min){//目的是找最后的那个有序数列beg=mid+1;}else{if(mid==nums.length-1||mid==0){return Math.min(nums[0],nums[nums.length-1]);}if(nums[mid]<nums[mid-1]&&nums[mid]<nums[mid+1]){return nums[mid];}else{beg--;end=mid;}}}return min;}
}
http://www.dtcms.com/a/542369.html

相关文章:

  • 王梓同亮相IMX国际音乐季,畅谈音乐创作理念
  • 企业网站管理百度网站打开
  • Hive安装部署
  • 初始网络通信
  • 从MSF载荷生成到Windows防火墙绕过
  • 成品网站设计网站网站设计优缺点
  • 广州建设工程交易中心网站软件定制网站优化 seo一站式
  • orchestrator Web API
  • 营销型网站免费企业网站模版单页网站seo如何优化
  • MySQL之慢查询sql排查及优化
  • 如何实现企业网站推广的系统性哪家公司做跳转网站
  • Redis Cluster集群理论
  • 广州网站开发定制设计北京做网站的大公司
  • 求个网站你会感谢我的西安大雁塔高多少米
  • 59网站一起做网店电商详情页设计思路
  • 网站建设预算表样本wordpress 上一篇 下一篇
  • 江西 网站 建设 开发永辉企业微信app下载安装
  • 提升学历是什么意思百度地图优化
  • 竹子林网站建设php网站开发实践指南
  • 【测试理论和实践 4.测试用例】
  • Java—接口
  • 移动网站源码兰州需要做推广的公司
  • 公司架设网站费用怎么做分录自学it怎么入门
  • 不用代码做网站杭州品牌网站设计
  • 商城建站模板广州从化建设网站官网
  • 免费的游戏网站建设建网站软件工具
  • Spring Boot3零基础教程,SpringSecurity 测试,笔记81
  • 哪里有网站推广优化wordpress获取自定类型
  • wordpress读取mysql北京百度搜索优化
  • IntelliJ IDEA 常用快捷键