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

企业网站建设项目计划书南阳响应式网站

企业网站建设项目计划书,南阳响应式网站,做网站头部为什么很多代码,网站推广都做什么内容👑专栏内容:剑指offer⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录一、题目描述1、题目2、示例示例1示例2二、题目分析1、暴力法2、二分法三、代码汇总1、暴力法2、二分法一、题目描述 1、题…

在这里插入图片描述

  • 👑专栏内容:剑指offer
  • ⛪个人主页:子夜的星的主页
  • 💕座右铭:前路未远,步履不停

目录

  • 一、题目描述
    • 1、题目
    • 2、示例
      • 示例1
      • 示例2
  • 二、题目分析
    • 1、暴力法
    • 2、二分法
  • 三、代码汇总
    • 1、暴力法
    • 2、二分法


一、题目描述

1、题目

剑指offer:旋转数组的最小数字

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

2、示例

示例1

输入:[3,4,5,1,2]

输出:1

示例2

输入:[3,100,200,3]

输出:3

二、题目分析

1、暴力法

旋转数组的原数组是一个非降序数组,也就是说,原数组中的元素是按照从小到大的顺序排列的。当将一个非降序数组旋转后,我们可以把旋转数组分为两部分,一部分是最大的一段非降序子数组,另一部分是最小的一段非降序子数组。旋转数组的最小元素就在这两部分之间。比如,数组[3, 4, 5,1,2] 它的最大的一段非降序子数组是[3,4,5]最小的一段非降序子数组是[1,2] ,而最小元素就是最小的非降序子数组的第一个数。

所以说,非降序数组在旋转之后有一个特征,就是在遍历的时候,原始数组是非递减的,旋转之后,就有可能出现递减,而引起递减的数字,就是最小值。

class Solution {
public:int minArray(vector<int>& numbers) {int n = numbers.size();		//(1)int min = numbers[0];		//(2)for(int i = 1;i<n;i++) 		//(3){if(numbers[i] < numbers[i-1])	//(4){min = numbers[i];break;			//(5)}}return min;}
};

(1)获取旋转数组的长度

(2)让旋转数组中第一个元素为最小值

(3)从第二个元素开始遍历旋转数组

(4)如果当前元素比前一个元素小,证明引出现了递减,那么当前元素就是旋转数组的最小元素

(5)找到了最小元素,跳出循环

2、二分法

我们要知道一件事,暴力查找的过程,本质是排除的过程,但是暴力遍历一次只能排除一个,效率过低。既然是查找,我们就可以用二分查找法来缩减时间复杂度。

前面分析过,旋转数组的最小值位于非降序子数组和旋转子数组的交界处。所以,我们可以使用二分查找来查找旋转子数组的第一个元素,也就是最小值。旋转数组的最小值一定在数组的旋转点左侧或者就是旋转点。因此,在查找过程中,我们需要缩小查找区间,尽可能保留可能包含最小值的区间使用leftright指针确定查找区间,缩小区间的方式是根据mid的值与right的值的大小关系进行判断。如果numbers[mid]>numbers[right],说明最小值在mid的右侧,将left指针移动到mid+1的位置;如果numbers[mid]<numbers[right],说明最小值在mid的左侧或者就是mid,将right指针移动到mid的位置;如果numbers[mid] == numbers[right],说明可能是一个旋转点,也可能不是,将right指针移动一位。

图片来自:Krahets

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

三、代码汇总

1、暴力法

class Solution {
public:int minArray(vector<int>& numbers) {int n = numbers.size();		int min = numbers[0];		for(int i = 1;i<n;i++) 	{if(numbers[i] < numbers[i-1])	{min = numbers[i];break;			}}return min;}
};

2、二分法

class Solution {
public:int minArray(vector<int>& numbers) {int n = numbers.size();int left = 0,right = n-1;//二分查找while(left<right){int mid = (left + right)/2;if(numbers[mid]>numbers[right])left = mid + 1;else if (numbers[mid]<numbers[right])right = mid;else   right --;}return numbers[left];}
};
http://www.yayakq.cn/news/558098/

相关文章:

  • 杭州做网站哪家好网络公关在哪些方面能发挥作用
  • 做县城门户网站婚纱摄影店排名前十名
  • 长沙学校网站建设金蝶财务软件一般多少钱
  • 长沙高校网站制作公司做一个游戏小程序需要多少钱
  • 大连福佳新城2026年建站吗太原这边有做网站的吗
  • 网站建设教程 企业邮箱宁波网站制作设计
  • 企业网站背景颜色做网站要注意
  • 教育网站建站wordpress模板原理
  • 动漫制作必须会画画吗交通运输部: 优化交通运输领域防控
  • 西安做网站的公司手机兼职赚钱一单一结学生
  • 贵州做网站公司深圳市建设工程交易服务网宝安分中心
  • 呼和浩特市网站建设网站开发企业组织结构
  • 最超值的赣州网站建设手机和电脑同步的进销存软件
  • 建设网站带后台管理宁波关键词优化企业网站建设
  • 深圳网站建设网站优化服务布吉附近做网站
  • 医院网站建设价值和意义wordpress 开发网站
  • 芯片公司网站建设婚纱官网
  • 做网站横幅的图片多大wordpress面板中文
  • 公众号自己做电影网站深圳企业官方网站建设
  • 贵阳h5网站建设wordpress 分类下文章列表
  • 设计自学网站哪个好wordpress 插件破解
  • 网站不备案可以使用么企业标准网站模板
  • 后缀为net的网站有哪些wordpress设置恢复
  • 网站建设运营岗位职责培训的网站建设
  • 给个网站免费的做经营性的网站需要注册什么条件
  • 在线logo设计免费生成器厦门seo外包服务
  • 网站开发量上海建设工程招标
  • 网站建设必学课程网站锚文本使用查询
  • 阜南网站建设娄底做网站
  • 开设赌场罪 网站开发嘉兴免费自助建站模板