LeetCode 74. Search a 2D Matrix (Search 2D Matrix) solution ideas and methods
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, Returntrue.
Idea: This question is relatively simple. It is mainly used for the first column and then for the specific row by using two bipartite methods.
The Code is as follows:
Public class Solution {public boolean searchMatrix (int [] [] m, int target) {// two binary searches // first searches for the first column and finds the row, then search for the int I = 0; int j = m. length-1; int mid = 0; // search for the first column while (I <= j) {mid = (I + j)/2; if (m [mid] [0] = target) {return true;} else if (m [mid] [0] <target) {I = mid + 1 ;} else {j = mid-1 ;}}if (m [mid] [0]> target) {if (mid = 0) {return false ;} mid --; // mid-1} // search for mid rows I = 0; j = m [0]. length-1; int k = mid; // returns true while (I <= j) {mid = (I + j)/2; if (m [k] [mid] = target) {return true;} else if (m [k] [mid] <target) {I = mid + 1 ;} else {j = mid-1 ;}/// If no result is found, false return false;} is returned ;}}