求最大子矩阵的大小 | 刷题打卡

287 阅读1分钟

一、题目描述💯

  • 求最大子矩阵的大小

二、代码实现🌂

function getMatrix(arr){
let r = arr.length
let c = arr[0].length
let result = 0
for(let i = 0;i<r;i++){
   let obj = []

   for (let j = 0; j <c; j++) {
       let k = 0
       let m = i
       while(m>= 0){
           if(arr[m][j]===1){
               k++
               m--;
           }else {
           break
           }
       }
       obj.push(k)
   }
   //求组中
   console.log(obj);
   let max = 0
   let k = i+1
   let h = 0
   for (let n = 0; n < obj.length; n++) {
       if(obj[n]!==0){
           h++
           if(k>obj[n]){k = obj[n]}
           
           max = h*k>max?h*k:max
           
       }
       if(obj[n]==0){
           h = 0
           k = i+1
       } 
   }
   console.log("第"+(i+1)+"行",max); 
   result  = result>max?result:max
}
return result
}
//查看首个元素,不会移除首个元素,如果队列是空的就返回null
function peek(){
   if(stackPop[0]){
       return stackPop[0]
   }else if(stackPush[0]){
       for (let index = 0; stackPush.length>0; index++) {
           let  ele = stackPush.shift()
           stackPop.unshift(ele)   
       }
       return stackPop[0]
   }else{
       return null
   }
}

三、简单测试🧪

console.log(getMatrix([[1,0,1,1],[1,1,1,1],[1,1,1,0]]));

代码下载地址

感谢🙇‍