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

[树/链表/图] Google电面题,List中的duplicate最小距离

🔗
csgtc 2014-3-13 12:03:00 | 只看该作者
全局:
csgtc 发表于 2014-3-12 23:02
loop一遍数duplicates, 比如C重复3次,B重复2次,A重复1次, 那么要让所有duplicates的distance尽可能大,必 ...

complexity是O(N)
回复

使用道具 举报

🔗
北美农民 2014-3-13 12:17:02 | 只看该作者
全局:
RomanC 发表于 2014-3-12 22:51
比如[A,A,A,A,B,B,C],最小距离为2,合法的应该是[A,B,A,B,A,C,A],感觉构造的方法没有我说的那么简单。。 ...

你这个case显然可以, 频率最多的A隔2个位置能放满, 然后放B, 然后C
回复

使用道具 举报

🔗
北美农民 2014-3-13 12:17:54 | 只看该作者
全局:
csgtc 发表于 2014-3-12 23:02
loop一遍数duplicates, 比如C重复3次,B重复2次,A重复1次, 那么要让所有duplicates的distance尽可能大,必 ...

对, 是这个意思, 但感觉没法证明。
回复

使用道具 举报

🔗
iveney 2014-3-14 03:50:53 | 只看该作者
全局:
应该 greedy 能 work 啊。Count frequency,然后用 min distance 来 assign positions. 注意这里应该先 assign frequency 最多的那个duplicate,因为他们的 bound 最 tight,必须先满足。所以涉及到 sorting,那么应该是 O(n log n).

证明思路:假设有 solution 但是这个方法找不到,也就是在 assign 某个 duplicate x 时,假设重复k次,之前已经assign了 i-1个,所以这个 dup 会被 assign 到 i, i+d, i+2d, ... i+kd,这个方法 fail 说明 for some j < k, i+jd >= n,也就是不够位置放了。那么唯一解决办法就是把他们整体前移,但问题是之前的元素出现次数 >= k,如果先 assign x 那么必然有其他 dup y 无法满足,所以无解,contradiction.

点评

求问下3A2B2C的例子  发表于 2014-10-21 11:29

评分

参与人数 1大米 +10 收起 理由
kinslover + 10 回答的很好!

查看全部评分

回复

使用道具 举报

🔗
lixiang.xjtu 2014-3-14 05:36:03 | 只看该作者
全局:
本帖最后由 lixiang.xjtu 于 2014-3-14 05:38 编辑

mark 一下,等会儿看
回复

使用道具 举报

🔗
花农 2014-3-14 06:33:51 | 只看该作者
全局:
搞一个hashtable, 存所有字母出现的frequency,然后根据frequency排序。原来的List扔掉。建立新的list,交替插入,先插入frequency最大的一个,然后第二大的一个结点,。。。第一轮插入所有出现的结点,各自frequency减去1. 然后进行新的一轮,直到所有结点的frequency都为0.

点评

3A1B1C的例子不会fail么……  发表于 2014-10-21 11:32
回复

使用道具 举报

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

本版积分规则

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