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

百度 网站 移动端找代理产品上哪个平台

百度 网站 移动端,找代理产品上哪个平台,seo项目分析,博物馆网站建设的根本意义❓剑指 Offer 11. 旋转数组的最小数字 难度:简单 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转…

❓剑指 Offer 11. 旋转数组的最小数字

难度:简单

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。

注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]

示例 1:

输入:numbers = [3,4,5,1,2]
输出:1

示例 2:

输入:numbers = [2,2,2,0,1]
输出:0

提示

  • n == numbers.length
  • 1 <= n <= 5000
  • -5000 <= numbers[i] <= 5000
  • numbers 原来是一个升序排序的数组,并进行了 1n 次旋转

注意:本题与 154. 寻找旋转排序数组中的最小值 II 相同。

💡思路:二分查找

将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的长度是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O ( l o g 2 N ) O(log2N) O(log2N)
在这里插入图片描述
此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。

通过修改二分查找算法进行求解(leftmidright 分别代表包含最小元素的新旋转数组 ):

  1. numbers[mid] > numbers[right]时, [left,mid] 区间内的数组是非递减数组[mid + 1, right] 区间内的数组为新的旋转数组,此时,left = mid + 1
  2. numbers[mid] < numbers[right]时, [mid,right] 区间内的数组是非递减数组[left, mid] 区间内的数组为新的旋转数组,此时,right = mid
  3. numbers[mid] = numbers[right]时, 无法判断哪一个是旋转数组,哪一个是非递减数组,此时 right- -,直到能判断。

🍁代码:(C++、Java)

C++

class Solution {
public:int minArray(vector<int>& numbers) {int left = 0;int right = numbers.size() - 1;if(right == 0) return numbers[0];while(left < right){int mid = left + (right - left) / 2;if(numbers[mid] > numbers[right]){left = mid + 1;}else if(numbers[mid] < numbers[right]){right = mid;}else{right--;}}return numbers[left];}
};

Java

class Solution {public int minArray(int[] numbers) {int left = 0;int right = numbers.length - 1;if(right == 0) return numbers[0];while(left < right){int mid = left + (right - left) / 2;if(numbers[mid] > numbers[right]){left = mid + 1;}else if(numbers[mid] < numbers[right]){right = mid;}else{right--;}}return numbers[left];}
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( l o g n ) O(logn) O(logn),平均时间复杂度为 O ( l o g ⁡ n ) O(log⁡n) O(logn),其中 n 是数组 numbers 的长度。如果数组是随机生成的,那么数组中包含相同元素的概率很低,在二分查找的过程中,大部分情况都会忽略一半的区间。而在最坏情况下,如果数组中的元素完全相同,那么 while 循环就需要执行 n 次,每次忽略区间的右端点,时间复杂度为 O(n)
  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

http://www.yayakq.cn/news/942366/

相关文章:

  • 俄语购物网站建设演员王野天
  • 天津市建设工程评标专家网站设计配色推荐的网站
  • 大庆网站建设黑icp备1900做鞋设备网站
  • 网站建设内部下单流程图北京集团公司注册流程
  • 深圳网站建设q479185700強小清新wordpress主题
  • 苏州企业网站制作设计公司我要自学网官网入口
  • 北京 公司网站制作招商团队外包
  • 网站策划专有技术郑州 网站 公司
  • 建设部网站撤销注册资质的都是公职人员吗电商型网站建设价格
  • 建网站挣钱广西建设厅官网站
  • 郑州网站建设公司排行榜百度刷搜索词
  • 求个网站好人有好报百度贴吧正规网站建设制作
  • 中国建设银行官方网站企业下载企业微信最新版
  • 开源网站搭建手机ppt制作软件全模板免费
  • 网站备案渝wordpress cc
  • 网站宣传的劣势建设企业管理类网站
  • 绥化做网站最好大连网站建设
  • 龙岗菠菜网站建设微博推广费用
  • 佛山新网站建设服务公司wordpress qq空间模板
  • 江西网站备案要求网站报错403
  • 山东省建设协会网站首页广告策划书前言怎么写
  • 阿里巴巴做网站找谁服装公司介绍模板
  • drupal wordpress网站简单的网站设计多少钱
  • 池州网站建设开发中小型网站建设怎么样
  • 烟台网站推广上海城隍庙景点介绍
  • 类似凡科网的网站什么是网络营销网络营销的特点有哪些
  • 破解进入网站后台品牌建设部门的搭建
  • 怎样查看网站是用什么cms_做的去除WordPress注册功能
  • wordpress拉黑用户扬州网站seo
  • 58同城怎么做网站电子商务网站建设简答题