60 lines
1.4 KiB
Markdown
60 lines
1.4 KiB
Markdown
|
# Leetcode Search-A-2D-Matrix-II
|
||
|
|
||
|
2022-09-03 14:57
|
||
|
|
||
|
> ##### Algorithms:
|
||
|
> #algorithm #divide_and_conquer
|
||
|
> ##### Data structures:
|
||
|
> #DS #array
|
||
|
> ##### Difficulty:
|
||
|
> #coding_problem #difficulty-medium
|
||
|
> ##### Additional tags:
|
||
|
> #leetcode
|
||
|
> ##### Revisions:
|
||
|
> N/A
|
||
|
|
||
|
##### Links:
|
||
|
- [Link to problem](https://leetcode.com/problems/search-a-2d-matrix-ii/)
|
||
|
___
|
||
|
### Problem
|
||
|
|
||
|
Write an efficient algorithm that searches for a value `target` in an `m x n` integer matrix `matrix`. This matrix has the following properties:
|
||
|
|
||
|
- Integers in each row are sorted in ascending from left to right.
|
||
|
- Integers in each column are sorted in ascending from top to bottom.
|
||
|
|
||
|
#### Examples
|
||
|
|
||
|
**Example 1:**
|
||
|
|
||
|
![](https://assets.leetcode.com/uploads/2020/11/24/searchgrid2.jpg)
|
||
|
|
||
|
```
|
||
|
**Input:** 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]], target = 5
|
||
|
**Output:** true
|
||
|
```
|
||
|
|
||
|
**Example 2:**
|
||
|
|
||
|
![](https://assets.leetcode.com/uploads/2020/11/24/searchgrid.jpg)
|
||
|
|
||
|
```
|
||
|
**Input:** 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]], target = 20
|
||
|
**Output:** false
|
||
|
```
|
||
|
|
||
|
#### Constraints
|
||
|
|
||
|
### Thoughts
|
||
|
|
||
|
> [!summary]
|
||
|
> This is a #divide_and_conquer problem.
|
||
|
|
||
|
It's divide and conquer, because every time we do a action,
|
||
|
the problem is smaller.
|
||
|
|
||
|
Start from the top-right, (alternatively, bottom-left),
|
||
|
because walking left makes the number smaller, and down makes the number bigger.
|
||
|
|
||
|
### Solution
|