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

算法24.0

153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

自己的理解:

如果题目表现出来明显的二段性  可以考虑用二分算法

为什么C--D[i]<=nums[n-1]?

因为c--d里面的元素 有可能包含着d  所以是小于等于 

还有没有别的二段性?

AB段的元素都比A大 CD段的元素都比A小  选择A点的值作为参照物 

这个时候需要边界情况的考虑  如果旋转之后是一个完整递增的数组(和原数组一样)

为什么当以A点为划分二段性是 出现这样的错误if(nums[mid]>=x) left=mid+1; //right = mid ;?

认真画图 就可以知道问题出在哪里  

细节:

审题要认真审题 题目有些关键词是思路的提示(例如时间复杂度 例这道题里面的nums中所有整数互不相同) 

二分算法画图的时候 要和题目信息相关 

例如这道题  left和right的中间点mid 落到的是AB和CD里面 这样找就容易找到二分算法的条件

别人的讲解:

暴力解法: 遍历一遍数组  然后找到结果 

优化暴力解法: 

A--B   C--D  这是明显的二段性   考虑用二分查找

这里的二段性是:AB中的元素大于D    CD里面的元素小于D

A--B  nums[i]>nums[n-1]   C--D[i]<=nums[n-1]

开始二分查找 如果mid落在了ab上  mid小于ret 那么下一步是left=mid+1  (可以绕过去 因为ab里面并没有d)

如果mid落在了cd上  mid>ret   那么下一步是right=mid (right不可以绕过去 因为有可能跳过要查找的元素) 

下面是思路图:

下面是题目、效果图和代码: 

class Solution 
{//选择A点为参照物public int findMin(int[] nums) {  int left = 0 ,right = nums.length-1;int x = nums[left] ;//记录下A点的元素//特殊情况的处理if(nums[left]<nums[right]){return nums[left];}while(left<right){int mid = left+(right-left)/2;if(nums[mid]>=x) left=mid+1; //right = mid ;else right = mid ;//left = mid + 1;}return nums[left];}
}
//特殊情况的处理:如果旋转一个循环呢  到时候结果是原数组

class Solution 
{public int findMin(int[] nums) {int left = 0,right = nums.length-1;int x =nums[right];//标记一下最后元素的位置 也就是思路图里面的D元素while(left<right){int mid = left + (right-left)/2;if(nums[mid]>x) left = mid + 1;else right = mid ; }return nums[left];}
}
//xiyu251103&1#3*6

http://www.dtcms.com/a/564772.html

相关文章:

  • 算法沉淀第十一天(序列异或)
  • 算法微调之代码助手模型实战
  • C++ 分治 归并排序解决问题 力扣 493. 反转对 题解 每日一题
  • 算法:从特殊到一般——拆解两两交换链表节点的递归解法
  • 代码随想录打卡day23:435.无重叠区间
  • 算法 day 42
  • VMware虚拟机安装CentOs系统与网络服务设置
  • 深入理解 Java 反射机制:原理、实践与风险防控​
  • 南充高端网站建设网络服务合同范本免费
  • 从公式看对抗逻辑:揭秘生成对抗网络(GAN)的训练博弈之路
  • kafka 2.X+zookeeper3.X 权限控制
  • Python Pip 常用命令与venv虚拟环境
  • 实验四 综合数据流处理-Storm案例实现
  • 黔西南建设厅网站帮小公司代账一个月费用
  • RAG_查询重构与分发
  • AIOT:用HealthFi重构全球健康金融体系的蓝海样本
  • 感知机之争,杀死神经网络的“人工智能之父”
  • 企业seo服务深圳百度seo培训
  • 清华大学网站建设方案wordpress 获取用户邮箱
  • 解析EasyGBS视频分发与按需直播关键技术,实现海量视频的高效触达
  • 在.NET Core Web Api中使用redis
  • .NET Core Web API开发需引入的三个基本依赖配置说明
  • 怎么在PPT里面插入网页?
  • ETL核对
  • Hangfire 入门与实战:在 .NET Core 中实现可靠后台任务处理
  • python ppt转pdf以及图片提取
  • 大连做公司网站的公司用php做网站要用什么软件
  • 中国建设银行网站口公关工资一般多少钱一个月
  • 线性矩阵不等式 (LMI)
  • 基于无六环H校验矩阵和归一化偏移minsum算法的LDPC编译码matlab性能仿真