class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
for(int i = 0 ; i < matrix.length ; i++){
for(int j = 0 ; j<matrix[0].length ; j++){
if(matrix[i][j] == target)
return true;
}
}
return false;
}
}
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int row = matrix.length-1 , col = 0;
while(row>=0 && col< matrix[0].length){
if(matrix[row][col] > target){
row--;
}else if(matrix[row][col] < target){
col++;
}else{
return true;
}
}
return false;
}
}
class Solution {
public int maximalRectangle(char[][] matrix) {
int rows = matrix.length;
if(rows == 0){
return 0;
}
int cols = matrix[0].length;
int[][] width = new int[rows][cols];
int maxArea = 0;
for(int i=0 ; i<rows ; i++){
for(int j=0 ; j<cols ; j++){
if(matrix[i][j] == '1'){
if(j == 0){
width[i][j] = 1;
}else{
width[i][j] = width[i][j-1] + 1;
}
}else{
width[i][j] = 0;
}
int minWidth = width[i][j];
for(int k = i ; k >=0 ; k--){
int heigth = i - k + 1;
minWidth = Math.min(minWidth , width[k][j]);
maxArea = Math.max(maxArea , minWidth*heigth);
}
}
}
return maxArea;
}
}