题目
Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
For example,
Consider the following matrix:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3, return true.
标签
Array、Binary Search
难度
中等
分析
题目意思是给你一个二维矩阵和一个value,这个二维矩阵每一行都是从小到大的顺序,而且每一行的行首的元素比上一行的行末元素要大,然后要你查找这个value是否在这个矩阵里。解题思路是拿value跟每行的最后一个元素比,如果比value小,则row+1,如果比value大,col-1,如果相等,则返回true。
C代码实现
bool searchMatrix(int** matrix, int matrixRowSize, int matrixColSize, int target)
{
int row=0, col=matrixColSize-1;
while(row<matrixRowSize && col>=0)
{
if(target == matrix[row][col])
return true;
else if(target > matrix[row][col])
row++;
else
col--;
}
return false;
}
本文介绍了一种高效的二维矩阵搜索算法,该矩阵具有行内元素递增且行间递进的特点。通过比较目标值与矩阵中特定位置的元素,逐步缩小搜索范围直至找到目标值或确定其不存在。
2883

被折叠的 条评论
为什么被折叠?



