目录
一、统计有序矩阵中的负数
暴力数组遍历
二分法
二、搜索二维矩阵
二分法
三、合并二叉树
深度优先搜索算法
四、填充每个节点的下一个右侧节点指针
广度优先搜索(层次遍历)
一、统计有序矩阵中的负数
暴力数组遍历
class Solution {
public:
int countNegatives(vector>& grid) {
int n = grid.size();
int m = grid[0].size();
int ans = 0;
for(int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
if(grid[i][j] < 0){
ans += (m - j);
break;
}
}
}
return ans;
}
};
二分法
class Solution {
public:
int countNegatives(vector>& grid) {
int n = grid.size();
int m = grid[0].size();
int ans = 0;
for(int i = 0; i < n; i++){
int low = 0, high = m - 1, flag = -1;
while(low <= high){
int mid = low + (high - low) / 2;
if(grid[i][mid] < 0){
flag = mid;
high = mid - 1;
}else{
low = mid + 1;
}
}
if(flag > -1) ans += (m - flag);
}
return ans;
}
};
二、搜索二维矩阵
二分法
class Solution {
public:
int countNegatives(vector>& grid) {
int n = grid.size();
int m = grid[0].size();
int ans = 0;
for(int i = 0; i < n; i++){
int low = 0, high = m - 1, flag = -1;
while(low <= high){
int mid = low + (high - low) / 2;
if(grid[i][mid] < 0){
flag = mid;
high = mid - 1;
}else{
low = mid + 1;
}
}
if(flag > -1) ans += (m - flag);
}
return ans;
}
};
二、搜索二维矩阵
class Solution {
public:
bool searchMatrix(vector>& matrix, int target) {
int m = matrix.size();
int n = matrix[0].size();
int low = 0, high = m * n - 1;
while(low <= high){
int mid = low + (high - low) / 2;
if(matrix[mid / n][mid % n] < target){
low = mid + 1;
}else if(matrix[mid / n][mid % n] > target){
high = mid - 1;
}else{
return true;
}
}
return false;
}
};



