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 , [+], [approx., +, +]]
given target = 5
, Return true
.
Given Target = 20
, return false
.
Analysis: This question just saw on EPI the day before yesterday ....
More than the search a 2D matrix, that is, each column is monotonically increasing, assuming that the Matrix is n * N, from the upper right corner of the element to start judging, set to X,
if x = = target, returns True
If x < target, go to the left column to find
If x > Target, you want to find the following line
Time complexity O (M + N)
public class Solution {public Boolean Searchmatrix (int[][] matrix, int target) { if (Matrix = = NULL | | matrix.leng th = = 0 | | Matrix[0].length = = 0) { return false; } int r = 0; int c = matrix[0].length-1; while (R < matrix.length && C >= 0) { if (matrix[r][c] = = target) { return true; } else if (Matrix[r][c] > target) { c--; } else{ r++; } } return false; }}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
#leetcode #search a 2D Matrix II