123
返回列表 发新帖
楼主: zsz1990ustc
跳转到指定楼层
上一主题 下一主题
收起左侧

Yelp onsite 面经,跪了一道题

🔗
roneil 2017-4-23 07:05:01 | 只看该作者
全局:
  1. /**
  2. * @param {movies[][]} movies
  3. * @return {sorted schedule[]}
  4. */
  5. var arrangeMovie = function(movies) {
  6.     if (movies.length === 0) return [];
  7.     let cache = {};
  8.     let visitedTime = new Set();
  9.     for (let i = 0; i < movies.length; i++) {
  10.             for (let time of movies[i]) {
  11.                     if (cache[time] === undefined) cache[time] = [];
  12.                     cache[time].push(i);
  13.             }
  14.     }
  15.     let schedule = [];
  16.     let visitedMovie = [];
  17.     visitedMovie.length = movies.length;
  18.     visitedMovie.fill(0);
  19.     (function helper(count) {
  20.             if (count === movies.length) return true;
  21.             for (let time in cache) {
  22.                     if (cache.hasOwnProperty(time)) {
  23.                             if (!visitedTime.has(time)) {
  24.                                     visitedTime.add(time);
  25.                                     for (let movie of cache[time]) {
  26.                                             if (visitedMovie[movie] === 0) {
  27.                                                     visitedMovie[movie] = 1;
  28.                                                     schedule.push({
  29.                                                             "movie": movie,
  30.                                                             "time": time
  31.                                                     });
  32.                                                     if (helper(count+1)) return true;
  33.                                                     schedule.pop();
  34.                                                     visitedMovie[movie] = 0;
  35.                                             }
  36.                                     }
  37.                                     visitedTime.delete(time);
  38.                             }
  39.                     }
  40.             }
  41.             return false;
  42.     })(0);
  43.     return schedule;
  44. };
  45. let movies = [[14,15,16,17], [14,15,16], [14, 15], [14, 15, 17]];
  46. console.log(arrangeMovie(movies));
复制代码
回复

使用道具 举报

🔗
junm5 2017-10-28 05:08:24 | 只看该作者
全局:
GreenIceTea 发表于 2017-1-8 01:35
该解法并不是O(n)吧, 因为你本质上还是backtracking啊. 你提到的"把那个时间点从所有list除去", 其实直接 ...

是O(n), build 一个Map, Key是时间点,value是个movie set
回复

使用道具 举报

🔗
QccDQ 2017-10-30 02:09:07 | 只看该作者
全局:
junm5 发表于 2017-10-28 05:08
是O(n), build 一个Map, Key是时间点,value是个movie set

请问能再详细说一下你的解法吗? 为什么是O(n) ?
回复

使用道具 举报

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

本版积分规则

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