领扣(LeetCode)寻找旋转排序数组中的最小值 个人题解
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7]
可能变为 [4,5,6,7,0,1,2]
)。
请找出其中最小的元素。
你可以假设数组中不存在重复元素。
示例 1:
输入: [3,4,5,1,2] 输出: 1
示例 2:
输入: [4,5,6,7,0,1,2] 输出: 0
这题拿到手发现很简单。。实际上也的确比较简单。我以为会挖个什么坑在等我,但是只要使用遍历数组的办法找到下一个值比上一个小的地方,输出后值就是答案。
这样做的时间复杂度是O(n)。在LeetCode的评测中,使用JAVA打败了62%的人,使用C打败了100%的人 XD
同时,我以为是题目设置问题,去度娘了一下,发现了还有二分的做法,使用二分做法也完成了,时间复杂度是O(logn),但是在这题的测试环境中反而比遍历的做法要慢。
附上两种做法代码:
1 class Solution { 2 public int findMin(int[] nums) { 3 int ans=0; 4 for (int i=0;i<nums.length;i++) 5 { 6 if(nums[i+1]<nums[i]) 7 ans = nums[i+1]; 8 } 9 return ans; 10 } 11 }
1 class Solution { 2 public int findMin(int[] nums) { 3 int low=0; 4 int high=nums.length-1; 5 int mid; 6 while(low<high) 7 { 8 mid=(low+high)/2; 9 if(nums[mid]>nums[high]) 10 low=mid+1; 11 else if(nums[mid]<nums[high]) 12 high=mid; 13 } 14 return nums[low]; 15 } 16 }
转载于:https://www.cnblogs.com/axiangcoding/p/9917557.html
领扣(LeetCode)寻找旋转排序数组中的最小值 个人题解相关推荐
- LeetCode 154. 寻找旋转排序数组中的最小值 II (二分)
154. 寻找旋转排序数组中的最小值 II 题意 给定一个包含重复元素的升序旋转数组 找出旋转数组的最小值 二分法 class Solution {public int findMin(int[] n ...
- LeetCode 153. 寻找旋转排序数组中的最小值(二分)
153. 寻找旋转排序数组中的最小值 题意 给定一个无重复元素的升序旋转数组 找出旋转数组的最小值 二分法 mid是向下取整:left相对于mid移动 只要中值小于nums[right],说明最小值一 ...
- LeetCode 153. 寻找旋转排序数组中的最小值【c++/java详细题解】
目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1, ...
- 算法-------寻找旋转排序数组中的最小值
题目 寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ).请找出其中最小的元素 ...
- python 寻找旋转排序数组中的最小值
| 寻找旋转排序数组中的最小值 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到 ...
- 153. 寻找旋转排序数组中的最小值 golang
153. 寻找旋转排序数组中的最小值 golang Me func findMin(nums []int) int {if len(nums) < 2 {return nums[0]}i, j ...
- Leetcode 153. 寻找旋转排序数组中的最小值 解题思路及C++实现
解题思路:二分查找 使用二分查找来寻找最小值. left,right,mid分别代表数组中最左边.中间.最右边的元素.这三个数字在旋转数组中的大小比较总共有三种情况. 1.数组是升序的,即 nums[ ...
- php旋转数组找出最小的,LeetCode 153 寻找旋转排序数组中的最小值
链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ...
- LeetCode 154 寻找旋转排序数组中的最小值 II
题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ).请找出其中最小的元素.注意数组中可能存在重 ...
最新文章
- Ubuntu 进入、退出命令行的快捷键
- 161. Leetcode 55. 跳跃游戏 (贪心算法-贪心区间)
- 【Linux系统编程】线程基本操作
- 在Webstorm中配置Compass Watcher
- php ci上传图片,CodeIgniter上传图片成功的全部过程分享
- MongoDB使用小结:一些不常见的经验分享
- 转载-C#委托之多播委托( 二)
- 索引器(C# 编程指南)
- IBM 语音识别输入系统
- 防火墙之ASDM配置虚拟专用网络实践
- PassMark 更新排行,苹果 M1 杀疯了
- 如何让必应bing收录我的网站
- rabbitmq中交换机类型direct和topic的区别
- Neo4j因果集群路由策略详解及驱动访问
- 企业微信(H5打开)调用微信小程序
- biu Vue2高级知识点
- C语言零基础项目:打字母游戏!详细思路+源码分享
- python视频转字符动画_python字符动画
- 几行代码就能去除图像和视频背景,还用啥PS
- 起航---开发基于国产华为鸿蒙操作系统的APP
热门文章
- 阿里Java高考卷来了,你能得几分?
- 为了帮视障人士“看见”,阿里工程师做了哪些努力?
- Seeed Raspberry Pi广角摄像/相机模块 支持Pi所有版本 OV5647
- 从数值、玩法、社交模块入手谈MMORPG手游设计
- 使命召唤手游迎来欧阳娜娜,这阵容够豪华,玩家期待吗?
- Nagios 请检查HTTP服务器关于该CGI的访问权限设置
- windows的定时任务设置
- 【字符集UTF8】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题
- 虚拟化(8)_Docker容器
- js 浏览器复制功能