楼主: jtzgz
跳转到指定楼层
上一主题 下一主题
收起左侧

谷歌onsite,15-19这一周

🔗
LaSeineFirenze 2018-10-22 11:33:15 | 只看该作者
全局:
第二题我有个想法:先考虑N*N的方阵,我们把对角线先填满,所填的值为该元素所在行的和与所在列的和比较小的那个。因为行和之和等于列和之和,所以一定有些元素绗和大于列和,另外一些元素行和小于列和。然后我们在其他位置贪心地补值即可。对于非方阵,我们把它补成方阵,多的元素全置0,然后再按刚才的方法做就行了。
回复

使用道具 举报

🔗
 楼主| jtzgz 2018-10-23 07:50:10 | 只看该作者
全局:
每天都很郁闷。想着准备了快一年,甚至是几年的谷歌onsite,最后弄成这个样子。心理很痛苦,懊悔。
回复

使用道具 举报

🔗
YZeng 2018-10-23 08:44:58 | 只看该作者
全局:
第二题可以这样麽:

  1.     private static int[][] fillMatrix(int[] rows, int[] cols) {
  2.         int[][] matrix = new int[rows.length][cols.length];
  3.         int r = 0;
  4.         int c = 0;
  5.         while (r < rows.length && c < cols.length) {
  6.             if (rows[r] <= cols[c]) {
  7.                 matrix[r][c] += rows[r];
  8.                 cols[c] -= rows[r];
  9.                 rows[r] = 0;
  10.                 r++;
  11.             } else {
  12.                 matrix[r][c] += cols[c];
  13.                 rows[r] -= cols[c];
  14.                 cols[c] = 0;
  15.                 c++;
  16.             }
  17.         }
  18.         return matrix;
  19.     }
复制代码
回复

使用道具 举报

🔗
YZeng 2018-10-23 08:47:34 | 只看该作者
全局:
[quote]YZeng 发表于 2018-10-23 08:44
第二题可以这样麽:

  1.     private static int[][] fillMatrix(int[] rows, int[] ...[/quote]
  2. 补充一下testing的代码:

  3. [code]public class fillMatrix {
  4.     public static void main(String[] args) {
  5.         int[] rows = new int[]{6,15,29};
  6.         int[] cols = new int[]{10,11,14,15};
  7.         int[][] matrix = fillMatrix(rows, cols);
  8.         for (int[] row : matrix) {
  9.             System.out.println(Arrays.toString(row));
  10.         }
  11.     }

  12.     private static int[][] fillMatrix(int[] rows, int[] cols) {
  13.         int[][] matrix = new int[rows.length][cols.length];
  14.         int r = 0;
  15.         int c = 0;
  16.         while (r < rows.length && c < cols.length) {
  17.             if (rows[r] <= cols[c]) {
  18.                 matrix[r][c] += rows[r];
  19.                 cols[c] -= rows[r];
  20.                 rows[r] = 0;
  21.                 r++;
  22.             } else {
  23.                 matrix[r][c] += cols[c];
  24.                 rows[r] -= cols[c];
  25.                 cols[c] = 0;
  26.                 c++;
  27.             }
  28.         }
  29.         return matrix;
  30.     }
  31. }
复制代码
回复

使用道具 举报

🔗
sfsttz 2018-10-23 08:58:08 | 只看该作者
全局:
哈哈 第二题就是最大流的教材例题
回复

使用道具 举报

🔗
 楼主| jtzgz 2018-10-23 10:23:04 | 只看该作者
全局:
sfsttz 发表于 2018-10-23 08:58
哈哈 第二题就是最大流的教材例题

是我太水了。献丑了。
回复

使用道具 举报

🔗
sfsttz 2018-10-23 10:24:52 | 只看该作者
全局:
jtzgz 发表于 2018-10-23 10:23
是我太水了。献丑了。

没有这个意思,我是觉得考这种题很搞笑,就算你写出正解面试官有可能不懂把你挂了,这种例子还是挺多的
回复

使用道具 举报

🔗
 楼主| jtzgz 2018-10-23 10:28:59 | 只看该作者
全局:
sfsttz 发表于 2018-10-23 10:24
没有这个意思,我是觉得考这种题很搞笑,就算你写出正解面试官有可能不懂把你挂了,这种例子还是挺多的

他出题的,怎么会不懂呢。这一题是CLRS的题么?
回复

使用道具 举报

🔗
sfsttz 2018-10-23 11:05:43 | 只看该作者
全局:
clrs没找到 有个几十年前的论文:https://core.ac.uk/download/pdf/82798986.pdf
回复

使用道具 举报

🔗
bobosha 2018-10-23 11:58:10 | 只看该作者
全局:
第二题CS的不懂,纯线性代数的角度来说。。。
有无数可能性,只要构造一种最简单满足条件的矩阵。
就是列和的行向量和行和的列向量的张量积。然后注意行和之和和列和之和是相等的,称为总和,张量积的每个元素除以这个总和,得到满足性质的矩阵。

怎么感觉不用写code,倒是可以写证明。。。
回复

使用道具 举报

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

本版积分规则

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