当前位置:网站首页>LeetCode刷题日记:153、寻找旋转排序数组中的最小值
LeetCode刷题日记:153、寻找旋转排序数组中的最小值
2022-08-02 01:44:00 【淡墨@~无痕】
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。
给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。
你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。
示例 1:
输入:nums = [3,4,5,1,2]
输出:1
解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。
示例 2:
输入:nums = [4,5,6,7,0,1,2]
输出:0
解释:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。
示例 3:
输入:nums = [11,13,15,17]
输出:11
解释:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。
提示:
n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
nums 中的所有整数 互不相同
nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转
思路:与搜索旋转排序数组差别不大
题解:
class Solution {
public int findMin(int[] nums) {
int res = Integer.MAX_VALUE;
int start = 0, end = nums.length-1;
if(nums.length == 0){
return -1;
}
while (start <= end) {
int mid = (start + end)/2;
// 查找最小值
res = Math.min(res, nums[start]);
res = Math.min(res, nums[end]);
res = Math.min(res, nums[mid]);
if(nums[start] <= nums[mid]){
if(nums[start] <= res && res < nums[mid] ){
end = mid-1;
}else{
start = mid + 1;
}
}else{
if(nums[mid] < res && res <= nums[nums.length-1]){
start = mid + 1;
}else{
end = mid - 1;
}
}
}
return res;
}
}
边栏推荐
- Redis cluster mode
- Why is on-chain governance so important, and how will Polkadot Gov 2.0 lead the development of on-chain governance?
- Pytorch seq2seq model architecture to achieve English translation tasks
- Redis 订阅与 Redis Stream
- flex布局中使用flex-wrap实现换行
- Use flex-wrap to wrap lines in flex layout
- 关于MySQL的数据插入(高级用法)
- 牛顿定理和相关推论
- C语言实验十 函数(二)
- Kubernetes之本地存储
猜你喜欢
Kubernetes之本地存储
Redis 订阅与 Redis Stream
大话西游无法登陆解决
Entry name ‘org/apache/commons/codec/language/bm/gen_approx_greeklatin.txt’ collided
Understand the big model in seconds | 3 steps to get AI to write a summary
【ORB_SLAM2】void Frame::ComputeImageBounds(const cv::Mat &imLeft)
3.Bean的作用域与生命周期
Byte taught me a hard lesson: When a crisis comes, you don't even have time to prepare...
Flex layout in detail
typescript33 - high-level overview of typescript
随机推荐
typeof in typescript32-ts
Flex layout in detail
The ultra-large-scale industrial practical semantic segmentation dataset PSSL and pre-training model are open source!
当关注「互联网+」模式的时候,通常仅仅只是在关注「互联网+」模式本身
记录一次数组转集合出现错误的坑点,尽量使用包装类型数组进行转换
fastjson详解
Day115. Shangyitong: Background user management: user lock and unlock, details, authentication list approval
Kubernetes — 核心资源对象 — Controller
After graduating from three books, I was rejected by Tencent 14 times, and finally successfully joined Alibaba
【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例
牛顿定理和相关推论
Shell Beginners Final Chapter
信息化和数字化的本质区别是什么?
typescript38-class的构造函数实例方法继承(implement)
S/4中究竟有多少个模块,你对这些模块了解多少
Flink_CDC construction and simple use
Detailed explanation of fastjson
Oracle data to mysql FlinkSQL CDC to achieve synchronization
C语言实验九 函数(一)
Reflex WMS中阶系列6:对一个装货重复run pick会有什么后果?