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

青海省建设厅网站姚宽一河北省建设执业注册中心网站

青海省建设厅网站姚宽一,河北省建设执业注册中心网站,自助建站教程,网站做相册题目 有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这…

题目


有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。

数据范围:1≤n≤10000,数组中任意元素的值: 0≤val≤10000

要求:空间复杂度:O(1) ,时间复杂度:O(logn)

示例1

输入:
[3,4,5,1,2]
返回值:
1

示例2

输入:
[3,100,200,3]
返回值:
3

思路


二分法:

  • mid = (start + end) / 2 为二分的中间位置。
  • mid,start,right分为三种情况:
    • nums[mid] > nums[end]时, 那么最小值一定在 [mid+1,end]区间中;
    • nums[mid] = nums[end]时,无法判断最小值在哪个区间,所以此时只能缩小end的值;
    • nums[mid] < nums[end]时,那么最小值一定在[start,mid]区间内。

解答代码


class Solution {
public:/*** @param nums int整型vector * @return int整型*/int minNumberInRotateArray(vector<int>& nums) {// write code hereint start = 0;int end = nums.size() - 1;while (start != end) {int mid = (start + end) / 2;if (nums[mid] > nums[end]) {//最小的数字在mid右边start = mid + 1;} else if (nums[mid] == nums[end]) {//无法判断,一个一个试end = end - 1;} else if (nums[mid] < nums[end]) {//最小数字要么是mid要么在mid左边end = mid;}}return nums[end];}
};
http://www.yayakq.cn/news/984367/

相关文章:

  • 网站建设外包多少钱吴忠网站建设
  • 怎么在网上做装修网站建网站商城平台
  • 做肝病科网站上海免费建站模板
  • 西安wordpress建站云南做网站哪家便宜
  • 网站开发代码交接文档书建站工具 开源
  • 甘肃营销型网站制作门户网站前期网络采集商家信息免费发布
  • 广东省建设厅的注册中心网站网站建设衤金手指花总
  • 备案网站转入阿里云企业微信下载官方网站
  • 你的网站尚未进行备案温建设文件发布在哪个网站
  • 阳信县住房和城乡建设局网站哔哩哔哩做视频网站
  • 网页设计与网站建设完全教程网站版式设计
  • 重庆企业网站的推广seo自学教程
  • 网站哪个好做网站的公司市场
  • 做调查赚钱的网站海口网站建设
  • 网站链接免费的WORDPRESS主题响应式
  • wordpress模板 图片站lol做直播网站
  • 平安区wap网站建设公司网站个人备案步骤
  • 浏览览器打开网址快手seo关键词优化
  • 完全免费网站源码养老做增减的网站
  • 做网站分期付款比例北京医疗机构网站前置审批需要的材料有哪些
  • 搜索网站制作教程青岛做网站公司排名
  • 黄冈网站推广下载wordpress页面和菜单
  • 北京学网站开发wordpress 图片 cdn
  • 国内vps做网站要备案吗制作一个网站需要什么
  • 佛山网站建设 合优营销型网站策划公司
  • 网站建设与管理简答题长沙岳麓区
  • 医院门户网站制作游戏app拉新平台
  • 深圳网站建设联系电话推广方案是什么
  • 网站设计的资质叫什么宁波住房建设局网站
  • 个人建购物网站 备案建德做网站