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

Doordash店面

全局:

2021(7-9月) 码农类General 硕士 全职@doordash - 猎头 - 视频面试  | 😐 Neutral 😐 Average | Pass | 在职跳槽

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

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

x
店面老题,求加米

At DoorDash, menus are updated daily even hourly to keep them up-to-date. Each menu can be regarded as a tree. When the merchant sends us the latest menu, can we calculate
how many nodes have changed/added/deleted?

Assume each Node structure is as below:

class Node {
        String key;
   
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
)
      /    |   \           \
e(5)   d(4)   f(6)       g(7)


There are a total of 5 changed nodes. Node f is a newly-added node. c(3) and old g(7) are deactivated and h(8) and g(7) are newly added nodes

评分

参与人数 6大米 +8 收起 理由
youling_tong + 1 很有用的信息!
地里的生活菌 + 3 给你点个赞!
guiguia + 1 很有用的信息!
baggiowen + 1 很有用的信息!
shawnchangsdu + 1 很有用的信息!

查看全部评分


上一篇:小金人quant面经
下一篇:抖音前端面试会问什么?
地里匿名用户
推荐
匿名用户-SVZDO  2021-11-12 13:32:00
  1. int diff(Node old, Node cur) {
  2.    if (old == null && cur == null) {
  3.       return 0;
  4.    } else if (old == null) {
  5.       return count(cur);
  6.    } else if (cur == null) {
  7.       return count(old);
  8.    }
  9.       int num = 0;
  10.       if (!old.key.equals(cur.key)) {
  11.         return count(old) + count(cur);
  12.       } else if (old.value != cur.value)
  13.         num = 1;
  14.       }
  15.       HashMap<String, Node> curKids = new HashMap<>();
  16.       for (Node n : cur.children) {
  17.          curKids.put(n.key, n);
  18.       }
  19.       for (Node n : old.children) {
  20.          if (curKids.containsKey(n.key)) {
  21.             num += diff(n, curKids.get(n.key));
  22.             curKids.remove(n.key);
  23.          } else {
  24.             num += count(n);
  25.          }
  26.       }
  27.          for (Node n : curKids.values()) {
  28.             num += count(n);
  29.          }
  30.          return num;      
  31. }

  32. int count(Node node) {
  33.   if (node == null) {
  34.     return 0;
  35.   }
  36.   int num = 1;
  37.   for (Node n : node.children) {
  38.     num += count(n);
  39.   }
  40.   return num;
  41. }
复制代码

评分

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

查看全部评分

回复

使用道具 举报

地里匿名用户
推荐
匿名用户-6EGJZ  2021-9-30 21:03:07
求问这题应该怎么做
回复

使用道具 举报

🔗
qwerasdf1144 2021-10-25 16:15:17 | 只看该作者
全局:
匿名者 发表于 2021-9-30 05:03
求问这题应该怎么做

每层list根据key排序的话可以深搜求解。以原树为起点,消失和新加的下面全是改动,相同的node比较value,然后继续同理递归。
回复

使用道具 举报

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

本版积分规则

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