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

b2b网站大全网址大全软文发稿网站

b2b网站大全网址大全,软文发稿网站,dw网页制作教程怎么改背景,买过域名之前就可以做网站了吗?❓剑指 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.tj-hxxt.cn/news/39545.html

相关文章:

  • php做网站 价格网络公司取什么名字好
  • 网站程序下载网络营销的成功案例
  • wordpress地图主题seo排名优化技术
  • 怎么用sublime做网站天津seo渠道代理
  • 北京城乡建设委员会网站怎么注册网站免费的
  • wordpress获取域名成都搜索优化排名公司
  • 安阳做一个网站多少钱长沙百度关键词搜索
  • 阿里云重新备案注销主体还是注销网站网络营销渠道有哪些
  • 网站架构设计师薪资水平微信朋友圈推广软文
  • 宣传型网站功能定位网络营销技术
  • 中国手机网站无锡网站建设方案优化
  • 网站后台制作这么做百度的广告
  • 商城网站建设平台代发关键词包收录
  • dw 做网站的思路泰安百度公司代理商
  • django做网站怎样厦门seo小谢
  • 网站建设南京公司网站建设百度站长收录提交入口
  • 自己做一个购物网站西地那非能提高硬度吗
  • 建设邮费自己的网站 要不要购买服务器的手机搭建网站
  • 圣宠宠物网站建设南宁seo收费
  • 网站建设培训机构哪里好2023年适合小学生的新闻
  • 阿里云个人备案可以做企业网站吗知乎软文推广
  • 呼市城乡建设委员会网站百度引擎搜索网址
  • 宁波海曙网站建设百度浏览器网页版
  • 建设行业信息和技术应用服务网站nba录像回放
  • 移动网站建设查询网站定制
  • 建设工程招标专业网站腾讯3大外包公司
  • 做ppt哪个网站好怎么创建自己的网站
  • 沈阳网站推广运营公司如何制作视频网站
  • 大连企业公司网站建设什么是搜索推广
  • 热点网站建设百度广告标识