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

江门论坛网站建设wordpress 网易云音乐插件

江门论坛网站建设,wordpress 网易云音乐插件,支付网站开发,上海小程序开发定制#x1f451;专栏内容#xff1a;剑指offer⛪个人主页#xff1a;子夜的星的主页#x1f495;座右铭#xff1a;前路未远#xff0c;步履不停 目录一、题目描述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(vectorint numbers) {int n numbers.size(); //1int min numbers[0]; //2for(int i 1;in;i) //3{if(numbers[i] numbers[i-1]) //4{min numbers[i];break; //5}}return min;} };1获取旋转数组的长度 2让旋转数组中第一个元素为最小值 3从第二个元素开始遍历旋转数组 4如果当前元素比前一个元素小证明引出现了递减那么当前元素就是旋转数组的最小元素 5找到了最小元素跳出循环 2、二分法 我们要知道一件事暴力查找的过程本质是排除的过程但是暴力遍历一次只能排除一个效率过低。既然是查找我们就可以用二分查找法来缩减时间复杂度。 前面分析过旋转数组的最小值位于非降序子数组和旋转子数组的交界处。所以我们可以使用二分查找来查找旋转子数组的第一个元素也就是最小值。旋转数组的最小值一定在数组的旋转点左侧或者就是旋转点。因此在查找过程中我们需要缩小查找区间尽可能保留可能包含最小值的区间使用left和right指针确定查找区间缩小区间的方式是根据mid的值与right的值的大小关系进行判断。如果numbers[mid]numbers[right]说明最小值在mid的右侧将left指针移动到mid1的位置如果numbers[mid]numbers[right]说明最小值在mid的左侧或者就是mid将right指针移动到mid的位置如果numbers[mid] numbers[right]说明可能是一个旋转点也可能不是将right指针移动一位。 class Solution { public:int minArray(vectorint numbers) {int n numbers.size();int left 0,right n-1;//二分查找while(leftright){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(vectorint numbers) {int n numbers.size(); int min numbers[0]; for(int i 1;in;i) {if(numbers[i] numbers[i-1]) {min numbers[i];break; }}return min;} };2、二分法 class Solution { public:int minArray(vectorint numbers) {int n numbers.size();int left 0,right n-1;//二分查找while(leftright){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.laogonggong.com/news/126100.html

相关文章:

  • 物流网站建设策划书中国建设建筑教育网站
  • 微信网站开发 新闻电信宽带360元一年
  • html5响应式设计公司网站模板整站html源码下载中国菲律宾南海争端
  • 网上做任务网站有哪些内容做检索网站
  • 网站访问量怎么做兼职做网站设计
  • 怎样维护网站建设wordpress 发邮件函数
  • 杭州 网站定制iis建立网站
  • 福州建设网站设计怎么申请网站空间域名
  • 学什么可以先做网站动态素材网站
  • 又好又快自助建站株洲做网站的
  • 大型网站开发 书籍制作表格的步骤
  • 网站设计遵从的原则自己做产品网站
  • 建设营销型网站的目的什么是规划网站
  • 建网站要钱吗 优帮云中国建筑官网首页
  • wordpress下载站源码wordpress购物车
  • 无忧建站新手如何搭建自己的网站
  • 差异基因做热图在线网站比较好的设计欣赏网站
  • 企业门户网站的设计 流程图宝安网站建设推广
  • 做照片的网站有哪些软件合肥商城网站建设
  • 广东建设信息公开网站为什么就一个网站打不开
  • 公司 网站建设 简介天津seo推广软件
  • 网站建设一百万网页设计实验报告心得和总结500字
  • 阿里云做网站步骤怎样黑公司的网站
  • 网站建立不安全怎么取消简易手机站
  • 建网站 3年服务器如何推广平台
  • 哪有做网站的定单论坛推广的特点
  • 360免费建站不要钱小型深圳网站页面设计
  • 024 网站推广做网站需要什么样的服务器
  • 有网站建wap南京小程序建设公司
  • 怎么做淘宝一样的网站营销企业网站建设步骤