Search a 2D Matrix - Array - Medium - LeetCode
💻 coding

Search a 2D Matrix - Array - Medium - LeetCode

1 min read 182 words
1 min read
ShareWhatsAppPost on X
  • 1The algorithm efficiently searches for a target value in a sorted 2D matrix with O(log n) time complexity.
  • 2Each row in the matrix is sorted, and the first integer of each row is greater than the last integer of the previous row.
  • 3The solution handles edge cases, including empty matrices, returning false when the target is not found.

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The algorithm efficiently searches for a target value in a sorted 2D matrix with O(log n) time complexity."

Search a 2D Matrix - Array - Medium - LeetCode

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.

Example 1:

Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 3 Output: true Example 2:

Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 13 Output: false Example 3:

Input: matrix = [], target = 0 Output: false

Constraints:

m == matrix.length n == matrix[i].length 0 <= m, n <= 100 -104 <= matrix[i][j], target <= 104

public class Solution {
 public bool SearchMatrix(int[][] matrix, int target) {
 if(matrix.Length==0){
 return false;
 }
 
 int r = matrix.Length;
 int c = matrix[0].Length;
 int total = r*c;
 
 int lo = 0;
 int hi = total;
 while(lo<hi){
 int mid = lo + (hi-lo)/2;
 int row = mid/c;
 int col = mid%c; 
 if(matrix[row][col]> target){
 hi = mid;
 }
 else if(matrix[row][col]< target){
 lo = mid+1;
 }
 else if(matrix[row][col]==target){
 return true;
 }
 else{
 return false;
 }
 }
 
 return false;
 }
}

Time Complexity: O(logn)

Space Complexity: O(1)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 31 October 2020 · 1 min read · 182 words

Part of AskGif Blog · coding

You might also like