Leetcode hot100
- 二分查找
- 1. 搜索插入位置
- 2. 搜索二維矩陣
二分查找
1. 搜索插入位置
搜索插入位置
標準二分的寫法:
復雜度分析
時間復雜度:O(log?n),其中 n 為數組的長度。二分查找所需的時間復雜度為 O(log?n)。
空間復雜度:O(1)。我們只需要常數空間存放若干變量。
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int n = nums.size();int left = 0, right = n - 1;while (left <= right) {int mid = ((right - left) / 2) + left;if (target <= nums[mid]) {right = mid - 1;} else {left = mid + 1;}}return left;}
};
2. 搜索二維矩陣
搜索二維矩陣
方法一:先二分確定列,再二分確定行
方法二:把二維n * m展開為一維數組,需要注意的是一維數組中下標為N的數,在二維數組中的對于坐標為[N / m][N % m]
class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int n = matrix.size(), m = matrix[0].size();int low = 0, high = m * n - 1;while (low <= high) {int mid = low + (high - low) / 2;int x = matrix[mid / m][mid % m];if (x < target) low = mid + 1;else if (x > target) high = mid - 1;else return true;}return false;}
};