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

10/3Facebook电面

🔗
citynart 2016-10-4 09:42:50 | 只看该作者
全局:
kobe24 发表于 2016-10-3 17:36
fb这题只要返回一个结果  但是LC那题要返回所有的结果  用BFS

确实确实,看了楼上的解释
回复

使用道具 举报

🔗
citynart 2016-10-4 09:43:30 | 只看该作者
全局:
tanpf5 发表于 2016-10-3 16:56
是,不过就算不是origin也很简单,就是处理稍微麻烦了点

楼主第二题可不可以quick selection啊
回复

使用道具 举报

🔗
 楼主| tanpf5 2016-10-4 09:45:21 | 只看该作者
全局:
gaocan1992 发表于 2016-10-4 09:43
楼主第二题可不可以quick selection啊

用heap一般就足够好了,quick selection感觉有点偏,没去研究
回复

使用道具 举报

🔗
citynart 2016-10-4 09:49:38 | 只看该作者
全局:
tanpf5 发表于 2016-10-3 17:45
用heap一般就足够好了,quick selection感觉有点偏,没去研究

想了一下quick selection写起来有点麻烦
回复

使用道具 举报

🔗
citynart 2016-10-4 10:07:07 | 只看该作者
全局:
gaocan1992 发表于 2016-10-3 17:49
想了一下quick selection写起来有点麻烦
  1. public Point[] findK(Point[] points, int k) {
  2.                 Comparator<Point> comparator = new Comparator<Point>() {
  3.                         public int compare(Point a, Point b) {
  4.                                 return (int) (getDistance(b) - getDistance(a));
  5.                         }
  6.                 };
  7.                 if (points.length <= k) {
  8.                         Arrays.sort(points, comparator);
  9.                         return points;
  10.                 }
  11.                 Point[] result = new Point[k];
  12.                 quickSelection(points, 0, points.length - 1, k);
  13.                 for (int i = 0; i < k; i++) {
  14.                         result[i] = points[i];
  15.                 }
  16.                 Arrays.sort(result, comparator);
  17.                 return result;
  18.         }

  19.         public void quickSelection(Point[] nums, int left, int right, int k) {
  20.                 if (left >= right) {
  21.                         return;
  22.                 }
  23.                 int position = partition(nums, left, right);
  24.                 if (position + 1 == k) {
  25.                         return;
  26.                 } else if (position + 1 < k) {
  27.                         quickSelection(nums, position + 1, right, k);
  28.                 } else {
  29.                         quickSelection(nums, left, position - 1, k);
  30.                 }
  31.         }

  32.         public int partition(Point[] nums, int left, int right) {
  33.                 if (left >= right) {
  34.                         return left;
  35.                 }
  36.                 Point point = nums[left];
  37.                 while (left < right) {
  38.                         while (left < right && getDistance(nums[right]) <= getDistance(point)) {
  39.                                 right--;
  40.                         }
  41.                         nums[left] = nums[right];
  42.                         while (left < right && getDistance(nums[left]) > getDistance(point)) {
  43.                                 left++;
  44.                         }
  45.                         nums[right] = nums[left];
  46.                 }
  47.                 nums[left] = point;
  48.                 return left;
  49.         }

  50.         public double getDistance(Point p) {
  51.                 return p.x * p.x + p.y * p.y;
  52.         }
复制代码
回复

使用道具 举报

🔗
iPhD 2016-10-4 10:09:24 | 只看该作者
全局:

有用heap的代码吗?能贴个上来吗?
回复

使用道具 举报

🔗
citynart 2016-10-4 10:11:59 | 只看该作者
全局:
iPhD 发表于 2016-10-3 18:09
有用heap的代码吗?能贴个上来吗?

heap很简单http://www.jianshu.com/p/807fc0ec0bc3这里面有
回复

使用道具 举报

🔗
iPhD 2016-10-4 10:21:04 | 只看该作者
全局:
问下楼主两题是不是都问了时间空间复杂度?据说这是FB的一贯风格。。。
回复

使用道具 举报

🔗
 楼主| tanpf5 2016-10-4 10:50:40 | 只看该作者
全局:
iPhD 发表于 2016-10-4 10:21
问下楼主两题是不是都问了时间空间复杂度?据说这是FB的一贯风格。。。

这两题时间空间都比较容易计算,都问了。据说有些难以计算的可能会不问
回复

使用道具 举报

🔗
houqingniao 2016-10-4 10:54:31 | 只看该作者
全局:
tanpf5 发表于 2016-10-4 08:47
这个方法不错,具体在空间复杂度上比我的方法好

stack 更容易想到一些~
我是用stack记录不匹配的index,然后扫一遍字符串,把这些剔除掉,不知道LZ是怎么做的?

回复

使用道具 举报

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

本版积分规则

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