目录
153. 寻找旋转排序数组中的最小值
解析
题解
LCR 173. 点名
解析
题解
153. 寻找旋转排序数组中的最小值
153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)
解析
题解
class Solution {
public:
int findMin(vector<int>& nums) {
// 024_专题三_二分查找算法_寻找旋转排序数组中的最小值_C++
int left = 0, right = nums.size() - 1;
int n = nums.size() - 1; // 用最后一个位置的值做比较,用第一个元素也能不过要考虑边界情况,当数组递增的时候就要考虑特殊情况
while (left < right)
{
int mid = left + (right - left) / 2;
if (nums[mid] > nums[n])
left = mid + 1;
else
right = mid;
}
return nums[left];
}
};
LCR 173. 点名
LCR 173. 点名 - 力扣(LeetCode)
解析
题解
class Solution {
public:
int takeAttendance(vector<int>& records) {
// 025_专题三_二分查找算法_0~n-1中缺失的数字_C++
int left = 0, right = records.size() - 1;
while (left < right)
{
int mid = left + (right - left) / 2;
if (records[mid] == mid)
left = mid + 1;
else right = mid;
}
return records[left] == left ? left + 1 : left; // 可能一直递增,缺失最后一个数字
}
};