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

Google Onsite 9/23

🔗
liurudahai 2016-10-4 06:50:12 | 只看该作者
全局:
whyvic13 发表于 2016-10-4 06:38
是要split放的,就是剩下的空间不够放下一整个sentence就要找最长的可能性把subsentence放进去,split是 ...

那直接先SPLIT然后用LC TEXT JUSTIFICATION方法做行么
回复

使用道具 举报

🔗
virpro 2016-10-5 06:53:46 | 只看该作者
全局:
whyvic13 发表于 2016-10-4 06:35
是有限制的,假设m远大于sentence长度

👍,这样可以基于sentence建一个转移矩阵,O(1)时间能算出来split的位置以及带到下一行的长度。总的时间复杂度应该是O(n)。
回复

使用道具 举报

🔗
sunnyroom 2016-10-5 09:54:21 | 只看该作者
全局:
virpro 发表于 2016-10-5 06:53
👍,这样可以基于sentence建一个转移矩阵,O(1)时间能算出来split的位置以及带到下一行的长度。总 ...

你好,能详细讲讲怎么做吗
回复

使用道具 举报

🔗
virpro 2016-10-5 11:46:47 | 只看该作者
全局:
sunnyroom 发表于 2016-10-5 09:54
你好,能详细讲讲怎么做吗

简单写了一下code

    public int sentencesToFillAMatrix(int m, int n, String sentence) {
        int[] splits = new int[sentence.length()];
        int j = 0;
        for (int i = 0; i < sentence.length(); i++) {
            if (sentence.charAt(i) == ' ')
                j = i;
            splits[i] = j;
        }
        int carry = 0;
        int count = 0;
        for (int i = 0; i < n; i++) {
            int len = m;
            if (carry != 0) {
                len = m - carry - 1;
                count++;
            }
            count += (len+1) / sentence.length();
            int left = (len+1) % sentence.length();
            if (splits[left] != 0) {
                carry = sentence.length() - left - 1;
            } else
                carry = 0;
        }
        return count;
    }
回复

使用道具 举报

🔗
sunnyroom 2016-10-6 04:59:51 | 只看该作者
全局:
virpro 发表于 2016-10-5 11:46
简单写了一下code

    public int sentencesToFillAMatrix(int m, int n, String sentence) {

太感谢了
回复

使用道具 举报

🔗
liurudahai 2016-10-11 04:44:07 | 只看该作者
全局:
还想问一下楼主,第四题怎么用STACK做?比如STACK顶端如果不比自己大怎么办,那就要POP掉找第一个比自己大的?那这个和直接遍历复杂度差不多吧
回复

使用道具 举报

🔗
 楼主| whyvic13 2016-10-12 02:23:19 | 只看该作者
全局:
liurudahai 发表于 2016-10-11 04:44
还想问一下楼主,第四题怎么用STACK做?比如STACK顶端如果不比自己大怎么办,那就要POP掉找第一个比自己大 ...

你可以用个例子跑一下比如:9,8,7,6,5,4,3,2,1,10,1,2,3,4,5,6...时间复杂度写一下就知道了,是O(n)的
回复

使用道具 举报

🔗
liurudahai 2016-10-12 13:01:25 | 只看该作者
全局:
whyvic13 发表于 2016-10-4 06:38
是要split放的,就是剩下的空间不够放下一整个sentence就要找最长的可能性把subsentence放进去,split是 ...

我怎么突然觉得这题就是text justification 那题,不过有几个区别,第一个这题就是那个句子SPLIT的单词,要反复重复放,直到整个矩阵放满,第二个text justification 如果有多余的空格,是要从前往后多加空格,但这个是每个单词之间就是1个空格(根据句子来),然后剩下的空格都放在末尾。 比如Jack and Jim kkkkkkkkkkkkk,最后比如那个kkkkkkkkkkkkk放不下了,就要放在下一行,但比如离宽度还差5个空格,Jack和and之间还是必须只保留一个空格,剩下的5个空格都放在末尾

补充内容 (2016-10-12 13:03):
没注意看楼主的要求,貌似这个太慢了

补充内容 (2016-10-12 13:17):
看了一下,楼上那个vipro的方法很巧妙,应该是对的
回复

使用道具 举报

🔗
qiuxuxing007 2016-10-12 13:15:02 | 只看该作者
全局:
第二轮是不是其实就是topological sort的做法
回复

使用道具 举报

🔗
 楼主| whyvic13 2016-10-13 06:28:24 | 只看该作者
全局:
qiuxuxing007 发表于 2016-10-12 13:15
第二轮是不是其实就是topological sort的做法

对的,就是拓扑排序
回复

使用道具 举报

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

本版积分规则

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