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

Facebook 新鲜面经

🔗
sealove999 2016-4-3 04:49:34 | 只看该作者
全局:
第一题
  1. public class Solution {
  2.   public LinkedList<Integer> s(TreeNode root) {
  3.     LinkedList<Integer> ret = new LinkedList<>();
  4.     if (root == null) {
  5.       return ret;
  6.     }
  7.     Deque<TreeNode> queue = new ArrayDeque<>();
  8.     queue.offer(root);
  9.     ret.add(root.val);
  10.     while (!queue.isEmpty()) {
  11.       TreeNode tn = queue.poll();
  12.       if (tn.left != null) {
  13.         queue.offer(tn.left);
  14.         ret.add(tn.left.val);
  15.       } else {
  16.         ret.add(null);
  17.       }
  18.       if (tn.right != null) {
  19.         queue.offer(tn.right);
  20.         ret.add(tn.right.val);
  21.       } else {
  22.         ret.add(null);
  23.       }
  24.     }
  25.     return ret;
  26.   }

  27.   public TreeNode d(LinkedList<Integer> list) {
  28.     if (list.isEmpty()) {
  29.       return null;
  30.     }
  31.     Iterator<Integer> it = list.iterator();
  32.     TreeNode ret = new TreeNode(it.next());
  33.     Deque<TreeNode> queue = new ArrayDeque<>();
  34.     queue.offer(ret);
  35.     while (!queue.isEmpty()) {
  36.       TreeNode tn = queue.poll();
  37.       Integer left = it.next();
  38.       Integer right = it.next();
  39.       if (left != null) {
  40.         tn.left = new TreeNode(left);
  41.         queue.offer(tn.left);
  42.       }
  43.       if (right != null) {
  44.         tn.right = new TreeNode(right);
  45.         queue.offer(tn.right);
  46.       }
  47.     }
  48.     return ret;
  49.   }

  50.   public static void main(String[] args) {
  51.     TreeNode tn1 = new TreeNode(1);
  52.     TreeNode tn2 = new TreeNode(2);
  53.     TreeNode tn3 = new TreeNode(3);
  54.     TreeNode tn4 = new TreeNode(4);
  55.     TreeNode tn5 = new TreeNode(5);
  56.     TreeNode tn6 = new TreeNode(6);
  57.     TreeNode tn7 = new TreeNode(7);
  58.     TreeNode tn8 = new TreeNode(8);

  59.     tn1.left = tn2;
  60.     tn1.right = tn3;
  61.     tn2.left = tn4;
  62.     tn3.left = tn5;
  63.     tn5.left = tn6;
  64.     tn5.right = tn7;
  65.     tn6.left = tn8;

  66.     Solution ss = new Solution();
  67.     TreeNode r = ss.d(ss.s(tn1));
  68.     System.out.println(ss.sameTree(tn1, r));
  69.     TreeNode r2 = ss.d(ss.s(null));
  70.     System.out.println(ss.sameTree(null, r2));
  71.     return;
  72.   }

  73.   private boolean sameTree(TreeNode r1, TreeNode r2) {
  74.     if (r1 == null && r2 == null)
  75.       return true;
  76.     if (r1 != null && r2 != null && r1.val == r2.val)
  77.       return sameTree(r1.left, r2.left) && sameTree(r1.right, r2.right);
  78.     return false;
  79.   }
  80. }
复制代码
回复

使用道具 举报

🔗
bobzhang2004 2016-4-3 04:50:17 | 只看该作者
全局:

应该不需要再少一遍找最大值或最小值,最大值和最小值肯定在两边
回复

使用道具 举报

🔗
hello2pig 2016-10-12 01:35:50 | 只看该作者
全局:
iwofr 发表于 2016-2-19 14:00
min不一定是drop那头的比如0 1 2 3 4 3 2, max是4,min是0, 但是max drop是4-2=2
个人觉得应该是先用 ...

二分法如何找到极大值? 因为有重复 感觉无法排除另一半啊,比如 3,1,2,4,5 。mid = 2的时候依然无法知道极小值在mid的哪一边
回复

使用道具 举报

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

本版积分规则

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