【leetcode刷题笔记】Find Minimum in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
You may assume no duplicate exists in the array.
题解:就是找数组中第一个“下凹”的地方,可以遍历,不过也可以用二分法,速度更快。
特别注意边界的处理:如果当前的中间值mid在0这个位置,只要考虑它后面的元素是不是小于它;如果在数组最后的位置上,要考虑它前面的元素是不是大于它。最后当发现当前mid所指的值不是所求的“下凹点”的时候,要把它和最后数组的最后一位比较,如果它比数组的最后一位大,说明要找的“下凹点”在mid所指位置的后面,否则在mid所指位置的前面。
JAVA版本代码如下:
1 import java.awt.datatransfer.StringSelection; 2 3 public class Solution { 4 public static void main(String[] args){ 5 int num[] = {3,4,5,1,2}; 6 Solution s = new Solution(); 7 System.out.println(s.findMin(num)); 8 } 9 public int findMin(int[] num) { 10 int begin = 0; 11 int end = num.length-1; 12 while(begin <= end){ 13 int mid = (begin + end)/2; 14 if(mid == 0){ 15 if(mid+1 < num.length && num[mid+1] < num[mid]) 16 return num[mid+1]; 17 else { 18 return num[0]; 19 } 20 } 21 if(mid == num.length-1){ 22 if(mid-1 >=0 && num[mid-1] > num[mid]) 23 return num[mid]; 24 else { 25 return num[0]; 26 } 27 } 28 if(num[mid-1] > num[mid] && num[mid+1] > num[mid]) 29 return num[mid]; 30 31 if(num[num.length-1] < num[mid]) 32 begin = mid+1; 33 else { 34 end = mid-1; 35 } 36 37 } 38 return num[0]; 39 } 40 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2014-04-01 【leetcode刷题笔记】Unique Binary Search Trees
2014-04-01 【leetcode刷题笔记】Best Time to Buy and Sell Stock II
2014-04-01 【leetcode刷题笔记】Reverse Integer
2014-04-01 【leetcode刷题笔记】Same Tree