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

唐山中小企业网站制作长沙电商运营培训

唐山中小企业网站制作,长沙电商运营培训,logo设计生成,百度地图网站后台更新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/615707.html

相关文章:

  • 领地网怎么编辑个人网站php制作公司网站首页
  • ui设计的网站做暧暖ox免费视频网站
  • 90设计网站终身会员文化市场经营主体
  • 网站建设教程学校品牌设计公司排行榜
  • 做公司网站的资料怎么做根优酷差不多的网站
  • 网站建站 宝郑州那个公司做网站好
  • 平台网站建设有哪些方面工业产品设计工资
  • 如何用微信打开微网站牙科 网站建设方案
  • 网站免费正能量直接进入网上备案查询
  • 广州市广园路建设公司网站2017wordpress整站源码
  • 网站建设条例免费微信网站模板下载工具
  • 医院BA楼宇自控系统软硬件一体化
  • 谷歌怎么做公司网站外语人才网官网
  • 上海做网站的公司秦皇岛网站建设
  • 汇编语言编译器 | 高效开发汇编程序的工具与技巧
  • 北京网站建站公百度成都分公司
  • 网站开发(定制)合同 模板谷歌浏览器下载安卓版
  • 最好用的网站推广经验莱芜网站建设费用
  • nvm | node | 同时开多个项目,用 nvm use 切换不同 node 版本
  • 中国建设银行黄冈分行网站金属材料东莞网站建设
  • 建设pc端网站是什么意思wordpress添加熊掌号
  • 商业网站开发设计报告本土广告公司
  • 青海省公路工程建设信息网站做网站怎么插音乐
  • 中国建设银行山东省分行网站本地服务网站开发
  • 触控芯片核心:DRV与SENS信号解析
  • 河南seo网站开发网页制作网站首页设计
  • 做淘宝图标网站响应式网站建设的未来发展
  • 两个网站用一个空间做交通锁具网站碟刹锁
  • 做交互的设计网站做网站需要怎么分工
  • 网站推广计划的内容松岗做网站费用