# 240-Search a 2D Matrix II ###### tags: `Medium` ## Question https://leetcode.com/problems/search-a-2d-matrix-ii/ ## Key ## Reference ## Solution >related problem : ### My Solution ```java= class Solution { public boolean searchMatrix(int[][] matrix, int target) { return search(matrix, target, matrix.length - 1, 0); } public boolean search(int[][] matrix, int target, int row, int start) { boolean res = BS(matrix[row], target, start); if(row == 0 || res) return res; while(start < matrix[0].length - 1 && matrix[row][start + 1] < target) start++; return search(matrix, target, row - 1, start); } public boolean BS(int[] nums, int target, int start) { int l = start; int r = nums.length - 1; while(l <= r) { int mid = l + (r - l) / 2; if(nums[mid] > target) r = mid - 1; else if(nums[mid] < target) l = mid + 1; else return true; } return false; } } ``` ### Other Solution ```java= class Solution { public boolean searchMatrix(int[][] matrix, int target) { int row = matrix.length - 1; int col = 0; while(row >=0 && col < matrix[0].length) { if(matrix[row][col] > target) { row--; } else if (matrix[row][col] < target) { col++; } else { //found it return true; } } return false; } } ```