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

amazon ng 凉了

 
🔗
kwenw 2020-8-21 03:57:58 | 只看该作者
全局:
和楼主一模一样的情况。。昨晚做的,我用的也是priorityqueue,然后两个sample cases过了,但是其他是0/20。。 感觉对题目理解并没有问题,debug半天都不知道为什么剩下20个test cases一个都没过
回复

使用道具 举报

🔗
obgood 2020-8-21 04:03:23 来自APP | 只看该作者
全局:
这题思路应该是先排序,然后(最大-第二大)*1+(第二大-第三大)*2 +.... 等等,加到够了他那个采购量为止

评分

参与人数 1大米 +1 收起 理由
harold1385 + 1 赞一个

查看全部评分

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

全局:
题是贪心,但是米不够也不知道发生了什么...
回复

使用道具 举报

🔗
lightstarbury 2020-8-21 05:38:39 | 只看该作者
全局:
请问楼主这个解法过不了 是因为超时了么
看了看楼主的解法 while里头套了一个for和一个while,是不是因为这个超时了呀?
感觉只要一个while就可以解决问题
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-NMX30  2020-8-21 06:39:31
zxcarrot1 发表于 2020-8-21 03:06
第二题我run的时候出现 TLE, 过了一会儿, 同样的代码再次run, 又没有问题了。 虽然看不到楼主代码,感觉 ...

请问你怎么知道有tle呢?有提示么?
回复

使用道具 举报

🔗
jimmylee12138 2020-8-21 07:05:16 | 只看该作者
全局:
但是amazon今年是不是只要有oa就一定是OA123全给啊?我看它最后提交时说下一个多久之内没收到就联系他们,那这样应该就是全会给吧
回复

使用道具 举报

🔗
tennis1038 2020-8-21 07:12:52 | 只看该作者
全局:
剛做完OA2,兩小時就收到OA3。
估計是今天或明天開始發OA3吧
求米求米
回复

使用道具 举报

🔗
florinedaily 2020-8-21 07:20:00 | 只看该作者
全局:
本帖最后由 florinedaily 于 2020-8-21 07:22 编辑
  1.    
  2. public static void main(String[] args) {

  3.         MaximumProfitForSellingAmazonBasicsProduct m = new MaximumProfitForSellingAmazonBasicsProduct();
  4.         int numSuppliers = 2;
  5.         int[] inventory = {3, 5};
  6.         int order = 6; // 19

  7.         System.out.println(m.calculateHighestProfit(numSuppliers, inventory, order));

  8.         // ------------------------------------------------------------------------------

  9.         int numSuppliers2 = 5;
  10.         int[] inventory2 = {2, 8, 4, 10, 6};
  11.         int order2 = 20; // 110

  12.         System.out.println(m.calculateHighestProfit(numSuppliers2, inventory2, order2));

  13.         // ------------------------------------------------------------------------------

  14.         Random rand = new Random();
  15.         int numSuppliers3 = rand.nextInt(50000 - 1) + 1;
  16.         int[] inventory3 = new int[numSuppliers];

  17.         int sumOfInventory = 0;
  18.         for (int i = 0; i < numSuppliers; i++) {

  19.             inventory3[i] = rand.nextInt(50000 - 1) + 1;
  20.             sumOfInventory += inventory3[i];
  21.         }
  22.         int order3 = rand.nextInt(sumOfInventory - 1) + 1;
  23.         System.out.println("sumOfInventory: " + sumOfInventory);
  24.         System.out.println("order: " + order3);

  25.         System.out.println(m.calculateHighestProfit(numSuppliers3, inventory3, order3));
  26.     }


  27.     // O(nlogn) + O(n) = O(nlogn)
  28.     private static long calculateHighestProfit(int numSuppliers, int[] inventory, int order) {
  29.         long profit = 0;
  30.         if (numSuppliers * order == 0) return profit;

  31.         Arrays.sort(inventory);

  32.         int i = inventory.length - 1;

  33.         while (i >= 0 && order > 0) {
  34.             if (i == 0) {
  35.                 while (order > 0) {
  36.                     if (order >= (numSuppliers - i)) {
  37.                         profit += (numSuppliers - i) * inventory[i];
  38.                         inventory[i]--;
  39.                         order -= (numSuppliers - i);
  40.                     } else {
  41.                         profit += order * inventory[i];
  42.                         order -= order;
  43.                     }
  44.                 }
  45.             } else {
  46.                 int largest = inventory[i];
  47.                 int second_largest = inventory[i - 1];
  48.                 int numOfOrder = largest - second_largest;

  49.                 if (numOfOrder < order) {
  50.                     // for i < j, x = i + (i+1) + (i+2) + ... + j
  51.                     // Gauss formula = (n / 2 + 1) * (1st num + last num)
  52.                     double x = (((double) largest - (second_largest + 1) + 1) / 2) * ((second_largest + 1) + largest);
  53.                     profit += x * (numSuppliers - i);
  54.                     order -= numOfOrder * (numSuppliers - i);
  55.                     i--;
  56.                 }
  57.             }

  58.         }

  59.         return profit;
  60.     }
复制代码


我尝试了一下O(nlogn),你们帮我看看有没有做错。。。[/i][/i][/i][/i][/i][/i]
回复

使用道具 举报

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

本版积分规则

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