推荐:数据科学课程和书籍清单以及培训讲座


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 2081|回复: 6
收起左侧

Uber电面

[复制链接] |试试Instant~ |关注本帖
rayord 发表于 2015-11-8 06:58:24 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 全职@Uber - 内推 - 技术电面 |Failfresh grad应届毕业生

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

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

x
Uber面经,题目在面经网上可以搜到,8月份就是这题,瞄了一眼,觉得简单就没自己实现。结果。。。。。。.1point3acres缃
题目:给一个长消息,分拆成几个短消息,每个短消息有一个长度限制。一个单词不能分拆到两个短消息中。然后在每个短消息后面加上页码信息,如 (1/3),(2/3),(3/3),这个新加入的页码信息也计算入每个短消息的长度限制.
.鐣欏璁哄潧-涓浜-涓夊垎鍦
这个题目看着挺简单,但真正trick的地方是页码(长度:1位,2位还是3位)数量只有在切分短消息之后才知道,而切分短消息又必须基于页码长度。
所以这个题的解决方案其实是backtracking。假设短消息少于10条,页码信息就是5位,比如(1/3).然后切分消息,如果消息总数多余10条,那么重新来过,假设消息少于100条...依次,直到切分的消息总数跟页码长度匹配为止。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

这里面的逻辑感觉很trick,面试45分钟到结束都没理清这个思路。完了想出来的解决方案,分享攒人品。

评分

1

查看全部评分

bobzhang2004 发表于 2016-2-10 05:33:52 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
这儿题好像在面经中见过
回复 支持 反对

使用道具 举报

欧弟的狗房 发表于 2016-3-25 13:00:37 | 显示全部楼层
关注一亩三分地微博:
Warald
请问楼主这道题的切法一定要把页码也包含在字数限制内吗?我看有些人写的是字数限制只针对文字内容呢
回复 支持 反对

使用道具 举报

悲伤网管 发表于 2016-4-1 10:53:37 | 显示全部楼层
欧弟的狗房 发表于 2016-3-25 13:00
请问楼主这道题的切法一定要把页码也包含在字数限制内吗?我看有些人写的是字数限制只针对文字内容呢
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
页码也包含,这才是复杂之处
回复 支持 反对

使用道具 举报

liurudahai 发表于 2016-12-2 09:49:04 | 显示全部楼层
这个backtracking感觉很慢啊,每次不行了再重来?
回复 支持 反对

使用道具 举报

wangxinbo1123 发表于 2017-1-3 07:10:06 | 显示全部楼层
试着按照楼主的思路写了一些想法,不知道对不对,感觉这样也太难了
                • Backtracking (vector<string>& partSol, string& input, int pos, int colLimit)
                        § if pos == input.size() globalResult = partSol; return partSol.size();
                        § int curPage = partSol.size() + 3
                        § for(int digit = 1; true; digit++)
                                □ calculate the remaining slots: limit = min(input.size() - pos, colLimit) - curPage - digit;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                                □ if input[pos + limit] == ' '
                                        ® find next non-space position: newPos
                                □ else // new position is at the middle of a word, must retreat
                                        ® retreat position to the first character of the word
                                □ partSol.push_back(newly-formed-string)
. from: 1point3acres.com/bbs                                 □ int totalPage = backtrack(partSol, input, newPos, colLimit). Waral 鍗氬鏈夋洿澶氭枃绔,
                                □ if(totalPage < pow(10, digit)) return totalPage;. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                                □ partSol.pop_back();. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                • After backtrack, if all words can be successfully put into the bucket, then iterate the globalResult again to write the correct page number.
回复 支持 反对

使用道具 举报

小A要当码农 发表于 2017-1-29 06:27:17 | 显示全部楼层
这题二分能做吗? 二分"/"后面那个数字的位数。。 比如10 好了就是100了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-7-28 19:10

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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