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

关于亚麻OA2 Nearest City和Smallest Negative Balance

🔗
匿名用户-RYKNV  2020-12-14 22:10:14 |倒序浏览

2021(7-9月) 码农类General 硕士 全职@amazon - 网上海投 - 在线笔试  | | Other | 应届毕业生

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

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

x
目前在准备亚麻的OA2,有两道题目前还不知道最优解是什么,LC开始和谐讨论区了,求问做过这俩
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ve Balance现在还没找到,希望大佬补齐

评分

参与人数 1大米 +4 收起 理由
匿名用户-SMGNP + 4

查看全部评分


上一篇:数据砖电面
下一篇:uber online test
地里匿名用户
推荐
匿名用户-FOHLQ  2020-12-16 12:29:38
第二题看错题了。最小负债和我们中文的理解不一样。应该是最大负债。汗一个。而且忘了最后排序。更新后的代码如下:
  1.     List<String> minimumDebtMembers(List<debtRecord> records) {
  2.         Map<String,Integer> debts=new HashMap<>();
  3.         for(debtRecord record:records) {
  4.             String borrower=record.borrower;
  5.             String lender=record.lender;
  6.             int amount=record.amount;
  7.             debts.put(borrower, debts.getOrDefault(borrower,0)-amount);
  8.             debts.put(lender, debts.getOrDefault(lender,0)+amount);
  9.         }
  10.         List<String> dest=new ArrayList<>();
  11.         int minDebt=Integer.MAX_VALUE;
  12.         for(Map.Entry<String,Integer> entry:debts.entrySet()) {
  13.             if (entry.getValue()>=0||entry.getValue()>minDebt) continue;
  14.             if(entry.getValue()<minDebt) {
  15.                 minDebt=entry.getValue();
  16.                 dest.clear();
  17.             }
  18.             dest.add(entry.getKey());
  19.         }
  20.         Collections.sort(dest);
  21.         if (dest.isEmpty()) dest.add("Nobody has a negative balance");
  22.         return dest;
  23.     }
复制代码


回复

使用道具 举报

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

评分

参与人数 1大米 +2 收起 理由
Zbeeee + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

地里匿名用户
推荐
匿名用户-FOHLQ  2020-12-16 12:15:01
本帖最后由 匿名 于 2020-12-16 12:27 编辑

[quote]匿名者 发表于 2020-12-16 09:02
第一题最近城市,用TreeMap:
  1. String[] findNearestCities(String[] ns,          ...[/quote]
  2. 终于搞定第一题:

  3. [code]  public String[] findNearestCities(int numOfPoints,
  4.                                  String[] ns,
  5.                                  int[] xs,
  6.                                  int[] ys,
  7.                                  int numOfQueries,
  8.                                  String[] qs) {
  9.         TreeMap<Integer,TreeMap<Integer, List<String>>> xyMap=new TreeMap<>();
  10.         TreeMap<Integer,TreeMap<Integer,List<String>>> yxMap=new TreeMap<>();
  11.         Map<String,int[]> npMap=new HashMap<>();
  12.         int size=ns.length;
  13.         for(int i=0;i<size;i++){
  14.             int x=xs[i];
  15.             int y=ys[i];
  16.             String n=ns[i];
  17.             TreeMap<Integer,List<String>> yMap=xyMap.getOrDefault(x,new TreeMap<>());
  18.             List<String> tmp1=yMap.getOrDefault(y,new ArrayList<>());
  19.             tmp1.add(n);
  20.             yMap.put(y,tmp1);
  21.             xyMap.put(x,yMap);
  22.             TreeMap<Integer,List<String>> xMap=yxMap.getOrDefault(y,new TreeMap<>());
  23.             List<String> tmp2=xMap.getOrDefault(x,new ArrayList<>());
  24.             tmp2.add(n);
  25.             xMap.put(x,tmp2);
  26.             yxMap.put(y,xMap);
  27.             npMap.put(n,new int[]{x,y});
  28.         }
  29.         String[] dest=new String[qs.length];
  30.         for(int i=0;i<qs.length;i++) {
  31.             String n=qs[i];
  32.             int[] p=npMap.get(n);
  33.             if(p==null) continue;

  34.             // check the same x
  35.             TreeMap<Integer,List<String>> yMap=xyMap.get(p[0]);
  36.             List<String> same=yMap.get(p[1]);
  37.             if (same.size()>1) {
  38.                 for(String str:same) {
  39.                     if(str.equals(n)) continue;
  40.                     if(dest[i]==null||str.compareTo(dest[i])<0) dest[i]=str;
  41.                 }
  42.                 continue;
  43.             }

  44.             int min=Integer.MAX_VALUE;
  45.             List<String> cities=new ArrayList<>();

  46.             Map.Entry<Integer,List<String>> lowerY=yMap.lowerEntry(p[1]);
  47.             if(lowerY!=null) {
  48.                 min=p[1]-lowerY.getKey();
  49.                 cities.addAll(lowerY.getValue());
  50.             }

  51.             Map.Entry<Integer,List<String>> higherY=yMap.higherEntry(p[1]);
  52.             if(higherY!=null) {
  53.                 if(higherY.getKey()-p[1]<min) {
  54.                     min=higherY.getKey()-p[1];
  55.                     cities.clear();
  56.                     cities.addAll(higherY.getValue());
  57.                 } else if(higherY.getKey()-p[1]==min) {
  58.                     cities.addAll(higherY.getValue());
  59.                 }
  60.             }

  61.             // check the same y
  62.             TreeMap<Integer,List<String>> xMap=yxMap.get(p[1]);

  63.             Map.Entry<Integer,List<String>> lowerX=xMap.lowerEntry(p[0]);
  64.             if(lowerX!=null) {
  65.                 if(p[0]- lowerX.getKey()<min) {
  66.                     min=p[0]- lowerX.getKey();
  67.                     cities.clear();
  68.                     cities.addAll(lowerX.getValue());
  69.                 } else if(p[0]- lowerX.getKey()==min) {
  70.                     cities.addAll(lowerX.getValue());
  71.                 }
  72.             }

  73.             Map.Entry<Integer,List<String>> higherX=xMap.higherEntry(p[0]);
  74.             if(higherX!=null) {
  75.                 if(higherX.getKey()-p[0]<min) {
  76.                     min=higherX.getKey()-p[0];
  77.                     cities.clear();
  78.                     cities.addAll(higherX.getValue());
  79.                 } else if (higherX.getKey()-p[0]==min) {
  80.                     cities.addAll(higherX.getValue());
  81.                 }
  82.             }

  83.             if(!cities.isEmpty()) {
  84.                 dest[i]=cities.get(0);
  85.                 for(String city:cities){
  86.                     if(dest[i].compareTo(city)>0) dest[i]=city;
  87.                 }
  88.             }
  89.         }
  90.         return dest;
  91.     }
复制代码


[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

评分

参与人数 2大米 +3 收起 理由
elainewu5 + 1 给你点个赞!
tanlion + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

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

使用道具 举报

🔗
Zbeeee 2020-12-15 10:39:20 | 只看该作者
全局:
格林匹施ZELQ 发表于 2020-12-15 04:35
排序后binary search找左边最近的 右边最近的 上面最近的 下面最近的 这四个中挑出一个

1.把横坐标一样 ...

是不是还要有一个Map存每个坐标对应的点的名字,因为要求返回的是String数组
回复

使用道具 举报

全局:
Zbeeee 发表于 2020-12-15 10:39
是不是还要有一个Map存每个坐标对应的点的名字,因为要求返回的是String数组

是的是的 你说得对
回复

使用道具 举报

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

评分

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

查看全部评分

回复

使用道具 举报

全局:
Zbeeee 发表于 2020-12-15 16:06
你说的排序我没有太懂是在哪里拍,最直观的方法写成这样,不知道能不能过所有Case:

[mw_shl_code=jav ...

https://leetcode.com/playground/jpjAKBHf

我写的Python 去那个OJ跑了 有tie的时候 OJ会有奇怪的解法,给我判了错

评分

参与人数 1大米 +2 收起 理由
Zbeeee + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

全局:
Zbeeee 发表于 2020-12-15 16:06
你说的排序我没有太懂是在哪里拍,最直观的方法写成这样,不知道能不能过所有Case:

[mw_shl_code=jav ...

我发现了,有tie的时候按照字母顺序排序

不过这题真的有病,还有两个点在同一个位置的情况,不想做了
回复

使用道具 举报

🔗
Zbeeee 2020-12-15 19:50:44 | 只看该作者
全局:
格林匹施ZELQ 发表于 2020-12-15 17:54
我发现了,有tie的时候按照字母顺序排序

不过这题真的有病,还有两个点在同一个位置的情况,不想做了

还有两个点同一位置??这题有点垃圾
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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