12
返回列表 发新帖
楼主: y42353041
跳转到指定楼层
上一主题 下一主题
收起左侧

G家实习店面

🔗
bobzhang2004 2015-12-5 11:17:34 | 只看该作者
全局:
写了下第一题的代码,欢迎指教
  1. public class SquaresNumber {

  2.         public static void main(String[] args) {
  3.                 int[][] matrix = {{0, 1, 1},
  4.                                                   {1, 1, 1},
  5.                                                   {1, 1, 1}};
  6.                 getSquaresNumber(matrix);
  7.         }
  8.         public static int getSquaresNumber(int[][] matrix) {
  9.                 if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
  10.                         return 0;
  11.                 }
  12.                 int m = matrix.length;
  13.                 int n = matrix[0].length;
  14.                 int[][] dp  = new int[m][n];
  15.                 for (int i = 0; i < m; i++) {
  16.                         if (matrix[i][0] == 1) {
  17.                                 dp[i][0] = 1;
  18.                         }
  19.                 }
  20.                 for (int i = 0; i < n; i++) {
  21.                         if (matrix[0][i] == 1) {
  22.                                 dp[0][i] = 1;
  23.                         }
  24.                 }
  25.                 for (int i = 1; i < m; i++) {
  26.                         for (int j = 1; j < n; j++) {
  27.                                 if (matrix[i][j] == 1) {
  28.                                         dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;
  29.                                 } else {
  30.                                         dp[i][j] = 0;
  31.                                 }
  32.                         }
  33.                 }
  34.                 int res = 0;
  35.                 for (int[] arr : dp) {
  36.                         for (int i : arr) {
  37.                                 res += i;
  38.                         }
  39.                 }
  40.                 System.out.println(res);
  41.                 return res;
  42.         }
  43. }
复制代码
回复

使用道具 举报

🔗
bobzhang2004 2015-12-5 11:19:50 | 只看该作者
全局:
请问这个constructor就是直接将数字变为string吗?
回复

使用道具 举报

🔗
whisperty 2015-12-6 09:13:32 | 只看该作者
全局:
bobzhang2004 发表于 2015-12-5 11:17
写了下第一题的代码,欢迎指教

你并没有算更大size的square啊
回复

使用道具 举报

🔗
bobzhang2004 2015-12-6 11:25:05 | 只看该作者
全局:
whisperty 发表于 2015-12-6 09:13
你并没有算更大size的square啊

dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;
这个1代表的自己这个小得size, Math.min就是在找更大的size的square,最后是要全部相加的
回复

使用道具 举报

🔗
leonidas1573 2015-12-6 12:06:57 | 只看该作者
全局:
难度真的略高.第一题就好长....
回复

使用道具 举报

🔗
mchzh 2015-12-6 12:45:32 | 只看该作者
全局:
第一题的red cell和black cell是随机分布的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表