給定一個整型矩陣map,其中的值只有0和1兩種,求其中全是1的全部矩形區域中,最大的矩形區域爲1的數量。 例如: 1 1 1 0 其中,最大的矩形區域有3個1,因此返回3。 再如: 1 0 1 1 1 1 1 1 1 1 1 0 其中,最大的矩形區域有6個1,因此返回6.java
package com.iqiyi;
import java.util.LinkedList;
public class Code1_9 {
public static int maxRecSize(int[][] map){
int ans=0;
int[] line=new int[map[0].length];
for(int i=0;i<map.length;i++){
for(int j=0;j<map[i].length;j++){
if(map[i][j]==0)
line[j]=0;
else {
line[j]++;
}
}
LinkedList<Integer> linkedList=new LinkedList<Integer>();
for(int t:line){
while(!linkedList.isEmpty()&&linkedList.peekFirst()>t){
linkedList.removeFirst();
linkedList.addLast(t);
}
if(linkedList.isEmpty())
linkedList.addLast(t);
else
linkedList.addLast(linkedList.peekFirst());
int temp=linkedList.peekFirst()*linkedList.size();
if(temp>ans)
ans=temp;
}
}
return ans;
}
public static void main(String[] args){
int[][] map=new int[][]{{1,0,1,1},{1,1,1,1},{1,1,1,0}};
System.out.println(maxRecSize(map));
}
}
複製代碼