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

亚麻OA 2021

🔗
匿名用户-RB2OQ  2021-1-25 13:55:01 |倒序浏览

2021(1-3月) 码农类General 硕士 全职@amazon - 内推 - 在线笔试  | | WaitList | 在职跳槽

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

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

x
本帖最后由 匿名 于 2021-1-25 13:58 编辑

2021年1月亚麻OA。
给定四种商品和预算求组合数。
您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


评分

参与人数 4大米 +5 收起 理由
bock + 2 很有用的信息!
serenatxj + 1 很有用的信息!
Elley + 1 赞一个!
dorothyzheng112 + 1 给你点个赞!

查看全部评分


上一篇:热带雨林 社招OA
下一篇:amazon sde intern vo 过经
全局:
楼主这种dp写法会超时吗 knapsack
  1. public int getNumberOfOptions(int[] priceOfJeans, int[] priceOfShoes,
  2.                                   int[] priceOfSkirts, int[] priceOfTops, int dollars) {
  3.         //dp[i][j] represents the # of options for buying items from 0 to i with j dollars
  4.         //
  5.        // induction rule: dp[i][j] += dp[i - 1][j - priceOfI] for each priceOfI if j - priceOfI >= 0
  6.         //base case: dp[i][0] = 0, dp[0][j] depends on how many priceOfItem0 is <= j
  7.         //time: O(4 * dollars * len of price array)

  8.         int[][] dp = new int[4][dollars + 1];
  9.         for (int i = 0; i < 4; i++) {
  10.             for (int j = 0; j <= dollars; j++) {
  11.                 if (j == 0) {
  12.                     dp[i][j] = 0;
  13.                 }
  14.                 else if (i == 0) {
  15.                     for (int price: priceOfJeans){
  16.                         if (price <= j) {
  17.                             dp[i][j]++;
  18.                         }
  19.                     }
  20.                 }
  21.                 else if (i == 1) {
  22.                     induction(dp, priceOfShoes, i, j);
  23.                 }
  24.                 else if (i == 2) {
  25.                     induction(dp, priceOfSkirts, i, j);
  26.                 }
  27.                 else if (i == 3) {
  28.                     induction(dp, priceOfTops, i, j);
  29.                 }
  30.             }
  31.         }
  32.         return dp[3][dollars];


  33.     }
  34.     private void induction(int[][] dp, int[] prices, int i, int j) {
  35.         for (int price: prices) {
  36.             if (j - price >= 0) {
  37.                 dp[i][j] += dp[i - 1][j - price];
  38.             }
  39.         }
  40.     }
复制代码

回复

使用道具 举报

推荐
skmdc1991 2021-2-12 06:50:31 | 只看该作者
全局:
本帖最后由 skmdc1991 于 2021-2-12 06:58 编辑
论坛匿名用户 发表于 2021-2-1 13:45
这个倒是有一点点可能?  能不能详细说一下你得mem是存什么?  就是key是什么,value是什么?  我当时没 ...

最basic的key 用 index + “,” + budget。 value用count。不过一般这种可以用dp iterative or dfs
+ memo的都可以用2d array来 represent。
我觉得要是纯dfs time complexity应该是b ^ n * (maxLen)
b = budget
n = 4 because given 4 array or given n array
maxLen = Max of size for 4 array

memo reduced to - b * n * maxLen

根据coin是s^n -> s*n
And
1335 Min job schedule dfs后就是n*n*d

你觉得呢?
回复

使用道具 举报

推荐
skmdc1991 2021-2-12 12:16:28 | 只看该作者
全局:
bydstand 发表于 2021-2-12 07:02
budget的复杂度是10 ** 9

那也还是得走一遍吧?可能像很多题网上的都需要mod下10 ^ 9 + 7. 因为worst case 只要combination里有低于budget就要loop一边。别的有什么办法?楼主最开始的log 的我觉得不feasible。 因为是在建于把其他3个array lock position在binary search最后一个。那其实每一个数都需要lock住其他三个。
回复

使用道具 举报

全局:
我怎么觉得这个题目是背包问题DP解决呢
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-RB2OQ  2021-1-25 14:47:31
o彩蝶寻梦o 发表于 2021-1-25 14:13
我怎么觉得这个题目是背包问题DP解决呢

DP会超时。 如果可能,稍微提供下具体思路得DP解法?  我用得两个物品价值得组合数,三个物品和价值得组合数,四个物品对应价值得组合数。  他得price range太大了,会TLE
回复

使用道具 举报

🔗
szhudl 2021-1-28 18:12:58 | 只看该作者
全局:
只有这一题吗?
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-RB2OQ  2021-1-29 00:51:55
szhudl 发表于 2021-1-28 18:12
只有这一题吗?

第二题比较简单我没贴,大概是一个排序数连续得最长得数组。
回复

使用道具 举报

🔗
skmdc1991 2021-1-30 04:42:02 | 只看该作者
全局:
DFS + Memo coin problem
Time: 4 * N where N = Max len of 4 array (reduced from brute force of N * 4 without memo)
Space: S where S = size of memo keys and dfs recursion stack

iterative DP 一时想不出来需要可能第二个for loop int coin改成这层的int【】。
回复

使用道具 举报

🔗
mchzh 2021-1-30 09:02:17 | 只看该作者
全局:
是不是有两个题啊,多谢
回复

使用道具 举报

🔗
mchzh 2021-2-1 08:28:13 | 只看该作者
全局:
dorothyzheng112 发表于 2021-1-30 08:40
楼主这种dp写法会超时吗 knapsack[mw_shl_code=java,true]public int getNumberOfOptions(int[] priceOfJea ...

感觉你的解法应该不会TLE,正在拜读
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-RB2OQ  2021-2-1 13:43:54
dorothyzheng112 发表于 2021-1-30 08:40
楼主这种dp写法会超时吗 knapsack[mw_shl_code=java,true]public int getNumberOfOptions(int[] priceOfJea ...

这个超时倒是小事,问题你内存就爆了啊。  dollor得取值范围是1 - 10 ^ 9。  你申请得有点多了。
回复

使用道具 举报

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

本版积分规则

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