目录
35. 搜索插入位置
解析
题解
852. 山脉数组的峰顶索引
解析
题解
162. 寻找峰值
解析
题解
35. 搜索插入位置
35. 搜索插入位置 - 力扣(LeetCode)
解析
题解
class Solution {
public:int searchInsert(vector<int>& nums, int target) {// 021_专题三_二分查找算法_搜索插入位置_C++int left = 0, right = nums.size() - 1;while (left < right){int mid = left + (right - left) / 2;if (nums[mid] < target)left = mid + 1;elseright = mid; // 没有减法就不需要 mid 的计算就不需要 + 1}if (nums[left] < target) return left + 1; // right 也行return right;}
};
852. 山脉数组的峰顶索引
852. 山脉数组的峰顶索引 - 力扣(LeetCode)
解析
题解
class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {// 022_专题三_二分查找算法_山脉数组的峰顶索引_C++int left = 1, right = arr.size() - 2; // 依照题意开头和结尾是不可能的while (left < right){int mid = left + (right - left + 1) / 2;if (arr[mid] > arr[mid - 1])left = mid;elseright = mid - 1;}return left;}
};
162. 寻找峰值
162. 寻找峰值 - 力扣(LeetCode)
解析
题解
class Solution {
public:int findPeakElement(vector<int>& nums) {// 023_专题三_二分查找算法_寻找峰值_C++int left = 0, right = nums.size() - 1;while (left < right){int mid = left + (right - left) / 2;if (nums[mid] > nums[mid + 1])right = mid;elseleft = mid +1;}return left; // 两个都行}
};