Title Description:
Write an efficient algorithm, searches for a value in a m x n matrix. This matrix has the following properties:
Integers in each row is sorted in ascending from left to right.
Integers in each column is sorted in ascending from top to bottom.
For example,
Consider the following matrix:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
Given target = 5, return true.
Given target =, return FALSE.
The problem seems to be the extension of search a 2D matrix, in fact, the idea of the first question is completely different. The more streamlined ideas are:
1. From the lower left to find, if MATRIX[R,C] (R is row, c is column) < target,c++; R--。
2. Until R or C crosses out.
Implementation code:
public class Solution {public bool Searchmatrix (int[,] matrix, int target) { var rowlen = Matrix. GetLength (0); var Collen = Matrix. GetLength (1); var row = rowLen-1; var col = 0; while (Col <= colLen-1 && row >= 0) { if (matrix[row,col] = = target) { return true; } else if (Matrix[row,col] < target) { col + +; } else{ Row--; } } return false; }}
Leetcode--Search a 2D Matrix II