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

Google SDE coding 面经 (新题,求idea)

🔗
匿名用户-4JNLF  2020-12-20 10:03:00 |倒序浏览

2020(10-12月) 码农类General 硕士 全职@google - 内推 - Onsite  | | Other | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Input:
- num_states:int
- delegates: int[]
- votes_president_A: int[]
- votes_president_B: int[]
- votes_Undecided: int[]

output: the minimum number of people vote A will lead A wi
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
number number people vote A
}
Any idea about this questions? I get stuck during the interview....


评分

参与人数 4大米 +14 收起 理由
Scala688 + 3 给你点个赞!
Neuromancer + 2 给你点个赞!
StupidCorn + 1 给你点个赞!
匿名用户-G7CHP + 8

查看全部评分


上一篇:抖音ng offer 求建议
下一篇:IMC SE Summer Intern 2021 OA & VO
推荐
JoyForce 2021-1-17 14:24:52 | 只看该作者
全局:
选举那道题我的解法:
  1. public int solution(
  2.         int num_states,
  3.         int[] delegates,
  4.         int[] votes_president_A,
  5.         int[] votes_president_B,
  6.         int[] votes_Undecided)
  7. {
  8.         // return minumber number people vote A
  9.         var target = delegates.Sum();
  10.         var dp = new int[target+1];
  11.         Array.Fill(dp, int.MaxValue);
  12.         dp[0] = 0;
  13.         var votes = new int[num_states];
  14.         for (var i = 0; i < num_states; ++i) {
  15.                 // total number of votes
  16.                 var total = votes_president_A[i] + votes_president_B[i] + votes_Undecided[i];
  17.                 // votes required to win for A
  18.                 votes[i] = total / 2 + 1 - votes_president_A[i];
  19.         }
  20.        
  21.         // dp[j] = min(dp[j-delegates[i]] + votes[i], dp[j])   0 <= i < num_states
  22.         for (var i = 0; i < num_states; ++i) {
  23.                 for (var j = target; j >= 0; --j) {
  24.                         if (j >= delegates[i] &&
  25.                                 dp[j - delegates[i]] != int.MaxValue &&
  26.                                 dp[j - delegates[i]] + votes[i] < dp[j]) {
  27.                                 dp[j] = dp[j - delegates[i]] + votes[i];
  28.                         }
  29.                 }
  30.         }
  31.        
  32.         // Find the minimum votes for delegates larger than half
  33.         var result = int.MaxValue;
  34.         for (var i = target/2+1; i <= target; ++i) {
  35.                 result = Math.Min(result, dp[i]);
  36.         }
  37.        
  38.         return result == int.MaxValue ? -1 : result;
  39. }
复制代码
回复

使用道具 举报

推荐
xiaocase 2021-1-1 07:45:37 | 只看该作者
全局:
  1.     public int solution(int num_states, int[] delegates, int[] votes_president_A, int[] votes_president_B, int[] votes_Undecided){
  2.         // sanity check first, null / length ...

  3.         int sum = 0;
  4.         int canGet = 0;
  5.         int alreadyGot = 0;
  6.         List<int[]> canWin = new ArrayList<>();
  7.         for (int i = 0; i < num_states; i ++) {
  8.             sum += delegates[i];
  9.             if (votes_president_A[i] + votes_Undecided[i] <= votes_president_B[i]) {
  10.                 continue;
  11.             }
  12.             canGet += delegates[i];
  13.             if (votes_president_B[i] + votes_Undecided[i] < votes_president_A[i]) {
  14.                 alreadyGot += delegates[i];
  15.                 continue;
  16.             }

  17.             int needed = (votes_Undecided[i] + votes_president_A[i] +
  18.                     votes_president_B[i]) / 2 - votes_president_A[i] + 1;
  19.             canWin.add(new int[]{delegates[i], needed});
  20.         }

  21.         int totalNeed = sum / 2 + 1 - alreadyGot;
  22.         if (totalNeed <= alreadyGot) return 0;
  23.         if (totalNeed > canGet) return -1;
  24.         int[][] dp = new int[2][canGet - alreadyGot + 1];
  25.         dp[0][0] = 0;
  26.         for (int i = 1; i < dp[0].length; i ++) {
  27.             dp[0][i] = Integer.MAX_VALUE;
  28.         }
  29.         int res = Integer.MAX_VALUE;
  30.         for (int i = 1; i <= canWin.size(); i ++) {
  31.             for (int j = 0; j < dp[0].length; j ++) {
  32.                 int pre = j - canWin.get(i - 1)[0] >= 0 ? dp[i % 2][j - canWin.get(i - 1)[0]] : Integer.MAX_VALUE;
  33.                 // dp[i][j] == min(dp[i - 1][j], dp[i][j - 当前票数])
  34.                 dp[i % 2][j] = Math.min(dp[(i - 1) % 2][j],
  35.                         pre == Integer.MAX_VALUE ? Integer.MAX_VALUE : pre + canWin.get(i - 1)[1]);
  36.                 if (j >= totalNeed ) res = Math.min(res, dp[i % 2][j]);
  37.             }
  38.         }
  39.         return res;
  40.     }
复制代码
回复

使用道具 举报

推荐
highsprite 2021-1-15 07:59:20 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
zebabc 2020-12-21 01:28:52 | 只看该作者
全局:
这就是一个01背包问题。。。用dp求解
回复

使用道具 举报

🔗
workworkhard 2020-12-21 03:00:34 | 只看该作者
全局:
没看懂题目啊。 有人能帮忙解释下吗
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-HEBTL  2020-12-21 08:01:32
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
djmiss 2020-12-23 07:59:05 | 只看该作者
全局:
标准01背包问题。
回复

使用道具 举报

🔗
苏浅 2020-12-24 16:10:08 | 只看该作者
全局:
匿名者 发表于 2020-12-21 08:01
我理解的是这样的

input1:

大佬, 这个delegate什么意思?
回复

使用道具 举报

🔗
lyronly 2020-12-26 11:51:11 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 3大米 +3 收起 理由
belljay + 1 给你点个赞!
Lucy Cao + 1 给你点个赞!
ALLEN_Z + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
flychicken 2021-1-11 15:02:08 | 只看该作者
全局:
本帖最后由 flychicken 于 2021-1-11 15:04 编辑

果然还是考的dp啊
回复

使用道具 举报

🔗
SleepySF 2021-1-14 06:36:17 | 只看该作者
全局:
lyronly 发表于 2020-12-26 11:51
每个
state 1:  5 0 0 20
转换为

求教这个不会同一个州的选票用了两次吗?
回复

使用道具 举报

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

本版积分规则

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