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

Jane街店面

全局:

2017(1-3月) 码农类General 硕士 全职@janestreet - 网上海投 - 在线笔试  | | Pass | 应届毕业生

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

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

x
这家面经不多,我来分享一下,为后面的面试攒人品。面试官是个年轻的程序媛,聊几句就能知道此人相当聪明,语速也极快,跟节奏很吃力。。。coding是在collabedit上,上来先问知道in order traversal吗,描述一遍后给了一张tree的图,要求你把in order的顺序报一遍。然后给了一个template<class T> 的TreeNode,里面有constructor以及left,r
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ture情况,姐姐说他们大部分infrastructure都用Ocaml写的,lz表示了一下震惊。
本来以为挂了,今天很意外的收到onsite,因为之前听说他们很多轮店面,希望面试别问Ocaml,求米!

上一篇:microsoft on campus跪经+吐槽
下一篇:IXL 棱鳞 癫眠
🔗
chungjin 2018-4-25 04:52:25 | 只看该作者
全局:
请问你是infra组吗?
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-P6OMT  2021-11-3 01:10:54
本帖最后由 匿名 于 2021-11-2 13:13 编辑

发错了,内容已删除
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-KMYSV  2021-11-3 01:12:00
  1. #include <iostream>
  2. #include <queue>
  3. #include <unordered_map>
  4. #include <unordered_set>
  5. #include <vector>

  6. using namespace std;

  7. class TreeNode {
  8.   TreeNode *left;
  9.   TreeNode *right;
  10.   int val;

  11.   public:
  12.   TreeNode(TreeNode *l, TreeNode *r, int v) : left(l), right(r), val(v) {}
  13.   TreeNode(int v) : left(nullptr), right(nullptr), val(v) {}
  14.   TreeNode *get_left() { return left; }
  15.   TreeNode *get_right() { return right; }
  16.   int get_val() { return val; }
  17. };

  18. // replace with a single val
  19. TreeNode *copyReplaceValHelper(TreeNode *node, int v) {
  20.   if (!node) return nullptr;

  21.   TreeNode *left_copied = copyReplaceValHelper(node->get_left(), v);
  22.   TreeNode *right_copied = copyReplaceValHelper(node->get_right(), v);
  23.   return new TreeNode(left_copied, right_copied, v);
  24. }

  25. TreeNode *copyReplaceVal(TreeNode *tree, int v) {
  26.   return copyReplaceValHelper(tree, v);
  27. }

  28. // replace with inorder
  29. TreeNode *copyReplaceInorderHelper(TreeNode *node, const vector<int> &vals, int &idx) {
  30.   if (!node) return nullptr;

  31.   TreeNode *left_copied = copyReplaceInorderHelper(node->get_left(), vals, idx);
  32.   int val_idx = idx++;
  33.   TreeNode *right_copied = copyReplaceInorderHelper(node->get_right(), vals, idx);
  34.   return new TreeNode(left_copied, right_copied, vals[val_idx]);
  35. }

  36. TreeNode *copyReplaceInorder(TreeNode *tree, const vector<int> &vals) {
  37.   int idx = 0;
  38.   return copyReplaceInorderHelper(tree, vals, idx);
  39. }

  40. // replace with level order
  41. TreeNode *copyReplaceLevelOrderHelper(TreeNode *node, unordered_map<TreeNode *, int> &hmap, const vector<int> &vals) {
  42.   if (!node) return nullptr;

  43.   TreeNode *left_copied = copyReplaceLevelOrderHelper(node->get_left(), hmap, vals);
  44.   TreeNode *right_copied = copyReplaceLevelOrderHelper(node->get_right(), hmap, vals);
  45.   return new TreeNode(left_copied, right_copied, vals[hmap[node]]);
  46. }

  47. TreeNode *copyReplaceLevelOrder(TreeNode *tree, const vector<int> &vals) {
  48.   if (!tree) return nullptr;

  49.   // create node->idx mapping
  50.   unordered_map<TreeNode *, int> hmap;
  51.   queue<TreeNode *> q({tree});
  52.   int idx = 0;
  53.   while (!q.empty()) {
  54.     TreeNode *node = q.front();
  55.     q.pop();

  56.     hmap[node] = idx++;
  57.     if (node->get_left()) q.push(node->get_left());
  58.     if (node->get_right()) q.push(node->get_right());
  59.   }

  60.   // copy
  61.   return copyReplaceLevelOrderHelper(tree, hmap,vals);
  62. }

  63. void printTree(const std::string &prefix, TreeNode *node, bool isLeft) {
  64.   if (node != nullptr) {
  65.     std::cout << prefix;

  66.     std::cout << (isLeft ? "├──" : "└──");

  67.     // print the value of the node
  68.     std::cout << node->get_val() << std::endl;

  69.     // enter the next tree level - left and right branch
  70.     printTree(prefix + (isLeft ? "│   " : "    "), node->get_left(), true);
  71.     printTree(prefix + (isLeft ? "│   " : "    "), node->get_right(), false);
  72.   }
  73. }

  74. void printTree(TreeNode *node) {
  75.   printTree("", node, false);
  76. }

  77. int main() {
  78.   // size = 6
  79.   TreeNode *input = new TreeNode(new TreeNode(new TreeNode(1), new TreeNode(3), 2), new TreeNode(new TreeNode(5), nullptr, 6), 4);
  80.   printTree(input);

  81.   // replace val
  82.   cout << "replace val " << endl;
  83.   printTree(copyReplaceVal(input, 0));

  84.   // replace inorder
  85.   cout << "replace inorder " << endl;
  86.   printTree(copyReplaceInorder(input, {1, 3, 5, 7, 9, 2}));

  87.   // replace level order
  88.   cout << "replace level order " << endl;
  89.   printTree(copyReplaceLevelOrder(input, {1, 2, 3, 4, 5, 6}));
  90. }
复制代码
回复

使用道具 举报

🔗
sunsiyue618 2023-9-21 21:16:36 | 只看该作者
全局:
  1. package src;

  2. import java.util.HashMap;
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Queue;

  7. public class ImmutableTree {
  8.     class TreeNode {
  9.         TreeNode left;
  10.         TreeNode right;
  11.         Integer val;

  12.         public TreeNode(int v, TreeNode l, TreeNode r) {
  13.             val = v;
  14.             left = l;
  15.             right = r;
  16.         }
  17.     }

  18.     public TreeNode inorderReplaceValue(TreeNode root, int v) {
  19.         if (root == null)
  20.             return null;
  21.         TreeNode left = inorderReplaceValue(root.left, v);
  22.         TreeNode right = inorderReplaceValue(root.right, v);
  23.         return new TreeNode(v, left, right);
  24.     }

  25.     int idx = 0;

  26.     public TreeNode inorderReplaceList(TreeNode root, List<Integer> list) {
  27.         if (root == null)
  28.             return null;
  29.         TreeNode left = inorderReplaceList(root.left, list);
  30.         int value = list.get(idx);
  31.         idx++;
  32.         TreeNode right = inorderReplaceList(root.right, list);
  33.         return new TreeNode(value, left, right);
  34.     }

  35.     private TreeNode levelOrderReplaceHelper(TreeNode root, List<Integer> list, Map<TreeNode, Integer> map) {
  36.         if (root == null)
  37.             return null;
  38.         TreeNode left = levelOrderReplaceHelper(root.left, list, map);
  39.         TreeNode right = levelOrderReplaceHelper(root.left, list, map);
  40.         return new TreeNode(list.get(map.get(root)), left, right);
  41.     }

  42.     public TreeNode levelOrderReplaceList(TreeNode root, List<Integer> list) {
  43.         Map<TreeNode, Integer> node2IdxMap = new HashMap<>();
  44.         Queue<TreeNode> q = new LinkedList<>();
  45.         if (root != null) {
  46.             q.offer(root);
  47.         }
  48.         int curIdx = 0;
  49.         while (!q.isEmpty()) {
  50.             int size = q.size();
  51.             for (int i = 0; i < size; i++) {
  52.                 TreeNode curNode = q.poll();
  53.                 node2IdxMap.put(curNode, curIdx);
  54.                 curIdx++;
  55.                 if (curNode.left != null)
  56.                     q.offer(curNode.left);
  57.                 if (curNode.right != null)
  58.                     q.offer(curNode.right);
  59.             }
  60.         }
  61.         return levelOrderReplaceHelper(root, list, node2IdxMap);
  62.     }

  63. }
复制代码
回复

使用道具 举报

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

本版积分规则

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