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

Google Intern 面经 20150112

🔗
mm豆 2015-4-6 06:28:02 | 只看该作者
全局:
eval 发表于 2015-2-20 11:12
hint:是否能shuffle成valid的字符串可以由每个字符出现的次数的关系确定。

shuffle是否要随机产生结果?还是对于固定输入,给出固定输出?
回复

使用道具 举报

🔗
 楼主| eval 2015-4-6 08:17:46 | 只看该作者
全局:
mm豆 发表于 2015-4-6 06:28
shuffle是否要随机产生结果?还是对于固定输入,给出固定输出?

你的意思是“是否有多个valid的output?”吧?输出任意一个valid的答案即可。
回复

使用道具 举报

🔗
mm豆 2015-4-6 08:22:01 | 只看该作者
全局:
eval 发表于 2015-4-6 08:17
你的意思是“是否有多个valid的output?”吧?输出任意一个valid的答案即可。

比如这个解法,对于一种输入,对应着唯一一种输入。没有随机的过程。不知道lz怎么做的?
“先记录每个字符出现的次数,即该字符需要被填入生成字符串的次数
然后从第一位开始填空
然后每次从剩下的字母堆中选取剩余待填入次数最多、且与前一位字符不冲突的字符填入,这样可以确保剩余可填写的不同字符种类是最多的
如果没有其他不冲突的待填写字符就报错
最多是O(26n)或O(256n)
回复

使用道具 举报

🔗
 楼主| eval 2015-4-6 08:29:24 | 只看该作者
全局:
mm豆 发表于 2015-4-6 08:22
比如这个解法,对于一种输入,对应着唯一一种输入。没有随机的过程。不知道lz怎么做的?
“先记录每个字 ...

你的思路应该没有问题,我也就是sort+group了一下,然后在用你说的“填空”的方式构造了一个valid的输出;当然,之前要check一下是否有valid的输出。

随机 有什么关系?
回复

使用道具 举报

🔗
mm豆 2015-4-6 08:39:42 | 只看该作者
全局:
eval 发表于 2015-4-6 08:29
你的思路应该没有问题,我也就是sort+group了一下,然后在用你说的“填空”的方式构造了一个valid的输出 ...

比如输入是aabc,那么按照这种算法,结果就是abac。这种算法只有唯一的一种结果。如果随机的话,可以产生多个结果,比如 b a c a 等
回复

使用道具 举报

🔗
 楼主| eval 2015-4-6 09:08:17 | 只看该作者
全局:
mm豆 发表于 2015-4-6 08:39
比如输入是aabc,那么按照这种算法,结果就是abac。这种算法只有唯一的一种结果。如果随机的话,可以产生 ...

嗯,给出 一个 valid的output即可。
回复

使用道具 举报

🔗
mm豆 2015-4-6 23:48:57 | 只看该作者
全局:
eval 发表于 2015-4-6 09:08
嗯,给出 一个 valid的output即可。

好的 谢谢啦~                    
回复

使用道具 举报

🔗
will_ym 2015-4-8 01:59:33 | 只看该作者
全局:
mm豆 发表于 2015-4-6 06:24
就是先构造一个符合要求的字符串,然后再随机化.随机化怎么保证相邻字母不等?比如, 符合要求的字符串为 ...

就是按照正常的随机化 从最后一个开始随机选一个index然后判断是否符合要求,如果符合要求的话exchange。不过不知道这种方法是不是真正随机的shuffle
回复

使用道具 举报

🔗
mm豆 2015-4-10 01:43:21 | 只看该作者
全局:
will_ym 发表于 2015-4-8 01:59
就是按照正常的随机化 从最后一个开始随机选一个index然后判断是否符合要求,如果符合要求的话exchange。 ...

我明白你说的算法:
        Random rnd = new Random();
           for (int i=size - 1; i>= 1; i--)
                swap(arr, i, rnd.nextInt(i-1));
这样随机交换之后不会出现相同字母变成邻居的情况么?
回复

使用道具 举报

🔗
will_ym 2015-4-25 06:55:05 | 只看该作者
全局:
mm豆 发表于 2015-4-10 01:43
我明白你说的算法:
        Random rnd = new Random();
           for (int i=size - 1; i>= 1; i--)

Sorry I cannot type Chinese right now.
Just need a check before swap to make sure no same elements next to each other.
回复

使用道具 举报

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

本版积分规则

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