要回国了,写个简单的总结吧。

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
把贵司招聘信息放这里
查看: 2623|回复: 11
收起左侧

Coursera OA最新出炉

[复制链接] |试试Instant~ |关注本帖
119018682 发表于 2016-9-29 00:32:39 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类General 硕士 全职@Coursera - 网上海投 - 在线笔试  | Other | fresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
今天做的coursera OA,第二题很多case没过,懵逼中
第一道题:
给n个日期,eg:20th Oct 2052 ; 1st Jun 1996.... 将所有日期转化成2052-10-20 ;  1996-6-01.... 1point3acres
月份,年份和几号用一个空格隔开。. from: 1point3acres

第二题:. 留学申请论坛-一亩三分地
给一串数字和一个target n : eg:      1,2,3;          n = 7;. Waral 博客有更多文章,
这串数字的子数字串为 {1} ; {2} ; {3} ; {1,2,3}  ; {1,2} ; {2,3}这六个。注意,所有子串中的数字一定要在原数组中相邻, 所以{1 , 3}不是这个串的子串。
现在问你子串中所有的数字之积小于n的子串有几个。. from: 1point3acres
这个case下应该为6,因为全都是。

第二题我用个二维dp, 对角线上放nums[i].然后递推公式是:
for(int i = 0 ; i < num.length ; i++) {
     for(int j = i+1 ; j < num.length ; j++) {
           dp[i][j] = dp[i][j-1] * nums[j];
            if(dp[i][j] < n) {
                  res++;
            }
     }
}
但是很多case过不了,到最后没时间了只能这么交了。。。。。错在哪里了有点懵逼。。。。。

上一篇:Mentor Graphics 面筋
下一篇:AMAZON OA1
sauceforge 发表于 2016-9-29 02:07:43 | 显示全部楼层
第二题和我上次在Hackerrank上做的一个OA一样,用一个队列来保存前i-1个里面乘积小于n的数,然后对于新加的数a[i], pop这个队列直到加入a[i] 后所有乘积还是满足条件,如果都不满足就不要push a[i]. 然后就能得到以a[i]结束有多少个子串。相当于是一维dp. dp[i]表示以a[i]结尾满足条件的子串有多少,但是需要用个队列来保存以前的数据。所以时间复杂度O(n), 空间也是O(n). 当时这样做在hackerank上全部过了,数据范围是10^5
回复 支持 1 反对 0

使用道具 举报

ann_good2005 发表于 2016-9-29 02:14:17 | 显示全部楼层
可能改成一维dp就可以?
vector<int> DP(n);.1point3acres网
for(int i = 0; i < n; ++i){
        for(int j = i; j < n; ++j){
                if(i == j) DP[j] = nums[i];
                else DP[j] = DP[j-1] * nums[j];
                if(DP[j] < target) res++;
        }
}
回复 支持 反对

使用道具 举报

哈哈贼 发表于 2016-9-29 03:16:38 | 显示全部楼层
楼主是OA1
回复 支持 反对

使用道具 举报

 楼主| 119018682 发表于 2016-9-29 04:11:22 | 显示全部楼层
哈哈贼 发表于 2016-9-29 03:16
楼主是OA1.留学论坛-一亩-三分地

-google 1point3acres对,第一个OA
回复 支持 反对

使用道具 举报

 楼主| 119018682 发表于 2016-9-29 04:41:52 | 显示全部楼层
sauceforge 发表于 2016-9-29 02:07
第二题和我上次在Hackerrank上做的一个OA一样,用一个队列来保存前i-1个里面乘积小于n的数,然后对于新加的 ...

哦对!数字还有范围是10^5,当时没在意。你这个解法好巧啊,不会溢出。
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

 楼主| 119018682 发表于 2016-9-29 04:43:12 | 显示全部楼层
ann_good2005 发表于 2016-9-29 02:14
可能改成一维dp就可以?
vector DP(n);
for(int i = 0; i < n; ++i){

这题应该是考如何控制溢出的,我就错在这个上面了。
回复 支持 反对

使用道具 举报

LumiG 发表于 2016-9-29 12:26:42 | 显示全部楼层
刚刚做了OA, 第一题是LZ的第二题,确实直接做会内存爆掉。但是似乎数组里所有的数都保证了是大于等于1的,所以搞两根指针维护一个sliding window, 扫一遍就能过了。

第二题是那个字符串匹配的,就是子串里带一个星号。做的时候得KMP吧,但是有库函数就直接用了,除了一个case都过了,那个case不知道是什么鬼,也没有输出……开脑洞试了各种,都过不了,后来就算了交掉了……
回复 支持 反对

使用道具 举报

TerenceFeng 发表于 2016-10-2 12:28:42 | 显示全部楼层
第二题 数组是有序的么
回复 支持 反对

使用道具 举报

LumiG 发表于 2016-10-4 11:00:18 | 显示全部楼层
TerenceFeng 发表于 2016-10-2 12:28
第二题 数组是有序的么

无序的,不过都保证了会大于1。。。这段就能过,O(n)的 来源一亩.三分地论坛.


def longest_subarray(nums, k):
    start, end = 0, 0
    cur = 1. 留学申请论坛-一亩三分地
    res = 0
    while end < len(nums):. 1point 3acres 论坛
        cur *= nums[end]
        while cur > k:
            cur /= nums[start]. 1point3acres
            start += 1
        res += (end - start + 1)
        end += 1
    return res
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-27 09:51

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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