一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1912|回复: 19
收起左侧

8.26 雅虎面试

[复制链接] |试试Instant~ |关注本帖
caiqi8877 发表于 2016-8-28 05:39:35 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 硕士 全职@Yahoo - 网上海投 - 技术电面 |Other其他

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

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

x
周五面的Yahoo Finance
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
1) reverse string in place-google 1point3acres
2) Combination sum.只需要输出最终有多少种组合. 相同数字不同顺序视为一样。

另外想请问下大神第二题如果用DP应该怎么写。。。


补充内容 (2016-8-28 12:49):-google 1point3acres
楼主已经知道怎么用dp写了。。

评分

1

查看全部评分

omega094 发表于 2016-8-28 07:07:49 | 显示全部楼层
第二题就是LC 377 I guess ?
回复 支持 反对

使用道具 举报

 楼主| caiqi8877 发表于 2016-8-28 09:32:49 | 显示全部楼层
omega094 发表于 2016-8-28 07:07
第二题就是LC 377 I guess ?

不同点在于 同样的组合不同顺序视为同一个
回复 支持 反对

使用道具 举报

evaeva11 发表于 2016-8-30 06:44:14 | 显示全部楼层
请问DP怎么做呀?
回复 支持 反对

使用道具 举报

 楼主| caiqi8877 发表于 2016-8-30 08:09:04 | 显示全部楼层
evaeva11 发表于 2016-8-30 06:44
请问DP怎么做呀?
. Waral 鍗氬鏈夋洿澶氭枃绔,
for(int coin:coins){
  for(int i = coin;i<=target;i++){. from: 1point3acres.com/bbs
     dp += dp[i-coin];.1point3acres缃

}
}
回复 支持 反对

使用道具 举报

aangel 发表于 2016-8-30 08:45:40 | 显示全部楼层
caiqi8877 发表于 2016-8-30 08:09
for(int coin:coins){
  for(int i = coin;i

LZ这段代码能不能写的详细一点啊?这里的dp和dp分别表示什么啊
回复 支持 反对

使用道具 举报

aangel 发表于 2016-8-30 09:06:19 | 显示全部楼层

第二题能否用DP来写?
回复 支持 反对

使用道具 举报

aangel 发表于 2016-8-30 10:05:05 | 显示全部楼层


我感觉第二题要是用DP来写,可以设一个二维数组f[i][j],  i表示的是sum, j表示的coins里面的坐标, 时间复杂度还是O(target*coins.length)

比如coins = [1,2,3],  target = 4

那么最终结果可表示为f[3][1]+f[2][2]+f[1][3],  f[3][1]表示以不超过1的数字来组合成sum为3的种类有多少种,f[2][2]表示以不超过2的数字来组合成sum为2的种类有多少种,f[1][3]表示以不超过3的数字来组合成sum为1的种类有多少种,然后再update f[4][1], f[4][2], f[4][3]
回复 支持 反对

使用道具 举报

evaeva11 发表于 2016-8-30 12:52:08 | 显示全部楼层
caiqi8877 发表于 2016-8-30 08:09
for(int coin:coins){.1point3acres缃
  for(int i = coin;i

谢谢哦
回复 支持 反对

使用道具 举报

pupuchan1116 发表于 2016-8-31 12:18:39 | 显示全部楼层
aangel 发表于 2016-8-30 08:45
LZ这段代码能不能写的详细一点啊?这里的dp和dp分别表示什么啊

楼主其实已经很详细了,把问题转化为coin change来做,就是一道最基本的一维DP题。有兴趣可以上网搜一下coin change就知道了。或者看leetcode 322,只是322求的是最小,这题是总和,但是思路是一样的
回复 支持 反对

使用道具 举报

aangel 发表于 2016-9-1 04:27:43 | 显示全部楼层
pupuchan1116 发表于 2016-8-31 12:18
楼主其实已经很详细了,把问题转化为coin change来做,就是一道最基本的一维DP题。有兴趣可以上网搜一下c ...

不对吧,这个题要看清要求啊,跟leetcode combination sum IV不一样的,
举个例子  coints = [1,2,3], target是100, 如果开一个一维数组f[100],那就是求f[100],
那f[100]要怎么得来呢,
假设f[100]的定义是sum为100的各种不同的组合的个数之和(注意这里不同的sequence只能算是一个)
那首先f[100]可以先表示为f[97]+3,即最后以3作为结尾的,那么计算f[98]+2的时候就出现问题了(表示最后一位以2结尾的),因为这个会跟之前里面的f[97]+3那个case会产生重复(比如[1,3,2]和[1,2,3]其实是算一种).1point3acres缃
所以这里要真用DP做得用二维数组
回复 支持 反对

使用道具 举报

pupuchan1116 发表于 2016-9-1 13:58:30 | 显示全部楼层
aangel 发表于 2016-9-1 04:27
不对吧,这个题要看清要求啊,跟leetcode combination sum IV不一样的,
举个例子  coints = [1,2,3], t ...

你说的对,我的错,我没有仔细想顺着楼主的思路就理所当然以为是这样了了,其实确实要用二维dp。
回复 支持 反对

使用道具 举报

evaeva11 发表于 2016-9-2 04:10:33 | 显示全部楼层
请问full time 和intern 冷冻期分别是多少呀?
回复 支持 反对

使用道具 举报

cicean 发表于 2016-9-2 05:34:41 | 显示全部楼层
真的有人还在面试Yahoo 么?
回复 支持 反对

使用道具 举报

小魏Stenica 发表于 2016-9-3 09:08:32 | 显示全部楼层
楼主我主要想请问一下reverse string in place,这个in place我完全想不到办法做到啊,怎么都要用到O(n) space,看到leetcode discuss上的in-place方法实际上也不算是in-place啊
求指点迷津
回复 支持 反对

使用道具 举报

pupuchan1116 发表于 2016-9-4 11:02:23 | 显示全部楼层
小魏Stenica 发表于 2016-9-3 09:08
楼主我主要想请问一下reverse string in place,这个in place我完全想不到办法做到啊,怎么都要用到O(n) sp ...

如果用Java是怎麼都不可能in place的,因為java的String是immutable的。那個應該是針對C和C++的吧
回复 支持 反对

使用道具 举报

小魏Stenica 发表于 2016-9-4 14:01:53 | 显示全部楼层
pupuchan1116 发表于 2016-9-3 20:02
如果用Java是怎麼都不可能in place的,因為java的String是immutable的。那個應該是針對C和C++的吧

对,我是用的Java,打破脑袋都想不通为什么在说in-place,原来是c++, 我对c++一点都不熟悉
多谢解答!
回复 支持 反对

使用道具 举报

cicean 发表于 2016-9-6 13:48:20 | 显示全部楼层
小魏Stenica 发表于 2016-9-4 14:01. 鍥磋鎴戜滑@1point 3 acres
对,我是用的Java,打破脑袋都想不通为什么在说in-place,原来是c++, 我对c++一点都不熟悉
多 ...

就是char[] 做,就叫in-place 了你得跟考官说。java string 没有智能转char[]
回复 支持 反对

使用道具 举报

小魏Stenica 发表于 2016-9-8 04:59:04 | 显示全部楼层
cicean 发表于 2016-9-5 22:48
就是char[] 做,就叫in-place 了你得跟考官说。java string 没有智能转char[]

好的,谢谢!我明白了!
回复 支持 反对

使用道具 举报

guoshuyan880929 发表于 2016-9-10 16:03:29 | 显示全部楼层
aangel 发表于 2016-9-1 04:27
不对吧,这个题要看清要求啊,跟leetcode combination sum IV不一样的,
举个例子  coints = [1,2,3], t ...

不用二维数组,楼主的一维数组DP思路是对的!. Waral 鍗氬鏈夋洿澶氭枃绔,
但是需要加两个语句:.鏈枃鍘熷垱鑷1point3acres璁哄潧
1. 把输入数组排序
2. 在外循环中跳过重复的数。
这样你提到的重复case也不会发生。

回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 04:26

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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