leetcode 153

153 寻找旋转排序数组中的最小值

这道题,如果我们熟悉数组 api,可以直接用 Arrays.sort()秒杀,这个方法使用了双轴快速排序算法。

解法1如下:

java 复制代码
class Solution {
    public int findMin(int[] nums) {
        Arrays.sort(nums);
        return nums[0];    
    }
}

第二种解法看到时间复杂度为O(log^n)我们第一时间应该想到二分查找,

java 复制代码
class Solution {
    public int findMin(int[] nums) {
        int left = 0;
        int right = nums.length - 1;  
        while (left < right){
            int mid = left + (right - left) / 2;
            if(nums[mid] > nums[right]) {
                left = mid + 1;
            } else{
                right = mid;
            }
        }
        return nums[left];
    }
}

通过不断收缩查询区间范围来快速找到想要的数据,解决方法如下:

相关推荐
爱吃涮毛肚的肥肥(暂时吃不了版)9 小时前
Leetcode——181.超过经理收入的员工
算法·leetcode·职场和发展
Charlie_lll9 小时前
力扣解题-接雨水
算法·leetcode
仰泳的熊猫9 小时前
题目2580:蓝桥杯2020年第十一届省赛真题-分类计数
数据结构·c++·算法·蓝桥杯
qyzm9 小时前
牛客周赛 Round 136
数据结构·python·算法
用户637818131199 小时前
优先队列的使用
算法
qq_334903159 小时前
C++与人工智能框架
开发语言·c++·算法
夕珩9 小时前
Java 排序算法详解:冒泡排序、选择排序、堆排序
java·算法·排序算法
Magic--9 小时前
从入门到精通:快速排序的核心原理、实现与优化
数据结构·算法·排序算法
weixin_649555679 小时前
C语言程序设计第四版(何钦铭、颜晖)第十章函数与程序结构之统计完全平方数
c语言·数据结构·算法
沈阳信息学奥赛培训9 小时前
深搜算法 6300:Grid Path Construction(2418)
算法