最大矩形, 美团笔试题
Posted lixyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大矩形, 美团笔试题相关的知识,希望对你有一定的参考价值。
暴力直接解决, 输入处理较为麻烦。
LeetCode 85 一样。
import java.util.*;
public class Main {
static int solve(int[][] arr, int n, int m) {
int area = 0;
for(int a = 0; a < n; a++){
for(int b = 0; b < m; b++) {
for(int c = 0; c <= a; c++){
for(int d = 0; d <= b; d++) {
int t = 0;
for(int i=c; i <= a; i++)
for(int j=d; j <= b; j++)
if(arr[i][j] == 1) t++;
if(t == (a-c+1)*(b-d+1))
area = Math.max(area, t);
}
}
}
}
return area;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
if(sc.hasNext()) sc.nextLine();
List<String> list = new ArrayList<>();
while(true){
char[] s = sc.nextLine().toCharArray();
StringBuilder sb = new StringBuilder();
for(int i=0; i < s.length;i++)
if(s[i] == ‘0‘ || s[i] == ‘1‘)
sb.append(s[i]);
if(sb.length() == 0) break;
list.add(sb.toString());
if(s[s.length-1] != ‘,‘) break;
}
if(sc.hasNext()) sc.nextLine();
int n = list.size(), m = list.get(0).length();
int[][] a = new int[n][m];
for(int i=0; i < n; i++)
for(int j=0; j < m; j++)
a[i][j] = list.get(i).charAt(j) == ‘1‘ ? 1 : 0;
int area = solve(a, n, m);
System.out.println(area);
}
}
以上是关于最大矩形, 美团笔试题的主要内容,如果未能解决你的问题,请参考以下文章