一亩三分地论坛

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

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

T 家 coding challenge

[复制链接] |试试Instant~ |关注本帖
幸福的小小杏儿 发表于 2015-11-8 13:47:28 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 硕士 全职@Twitter - 校园招聘会 - 在线笔试 |Otherfresh grad应届毕业生

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

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

x
Twitter OA, 两道题六十分钟。
第一题: http://www.cut-the-knot.org/proofs/LinesDividePlane.shtml, 要考虑输入很大的情况,计算结果大于10^9的直接输出最后9个digits
第二题: given N integers d[0], d[1],......d[N-1] 比如 {1 3 2 3 4 1}.   输出两个bit string, 第一个从左往右看,d是否跟前面digits有重复, 所以答案是 000101。
第一个从右往左看,d是否跟后面digits有重复, 所以答案是 110000
就输出这两个bit string。 brute force,用了set做。


求RP啦~最近好低迷啊~
祝大家都拿到理想offer!


补充内容 (2015-11-8 13:48):
Typo:第二个从右往左看*

评分

3

查看全部评分

BrilliantBean 发表于 2016-3-23 09:06:22 | 显示全部楼层
求问大神 第一题你是怎么做的啊 直接套用公式吗
回复 支持 反对

使用道具 举报

海盗包子 发表于 2016-3-23 10:25:20 | 显示全部楼层
BrilliantBean 发表于 2016-3-23 09:06
求问大神 第一题你是怎么做的啊 直接套用公式吗

第一题可以直接用公式吧,个人觉得可以运算时拆开防止数值过大,例如
Ln=(n^2+n+2)/2
化成Ln=n*n/2 + n/2 + 1
这样运算过程超出10^9也可以只保留后9位
回复 支持 反对

使用道具 举报

BrilliantBean 发表于 2016-3-24 04:21:49 | 显示全部楼层
海盗包子 发表于 2016-3-23 10:25
第一题可以直接用公式吧,个人觉得可以运算时拆开防止数值过大,例如
Ln=(n^2+n+2)/2
化成Ln=n*n/2 + n ...
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
我的想法是用leetcode上面的multiply string的方法处理,这样的话不论是多大的数都不会超出边界的,不知道是否可行呢?
回复 支持 反对

使用道具 举报

BrilliantBean 发表于 2016-3-24 04:23:13 | 显示全部楼层
海盗包子 发表于 2016-3-23 10:25
第一题可以直接用公式吧,个人觉得可以运算时拆开防止数值过大,例如
Ln=(n^2+n+2)/2
化成Ln=n*n/2 + n ...

运算过程超过10^9的话 如何保留后九位呢
回复 支持 反对

使用道具 举报

海盗包子 发表于 2016-3-24 06:18:24 | 显示全部楼层
BrilliantBean 发表于 2016-3-24 04:23
运算过程超过10^9的话 如何保留后九位呢

multiply string这个方法我确实没有想到,但我感觉如果考点不在这里可能会超时啊,用long来存储应该够用了,输入应该就是int了,或者先把输入n mod 10^9.
回复 支持 反对

使用道具 举报

BrilliantBean 发表于 2016-3-24 06:38:04 | 显示全部楼层
海盗包子 发表于 2016-3-24 06:18
multiply string这个方法我确实没有想到,但我感觉如果考点不在这里可能会超时啊,用long来存储应该够用 ...

是的 因为我昨天考虑到 int可以是Integer.MAX_VALUE, 而超出边界的部分就是n^2的那部分,遂想到用multiply string的方法来解,反正在ide上是跑出结果了,既然考点时long的话 那就放心啦,
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-3-27 10:01:49 | 显示全部楼层
第一题
  1. public class Solution {
  2.   static int LinesDividePlane(int a) {
  3.     long b = a;. more info on 1point3acres.com
  4.     long c = (b * b + b + 2) / 2;
  5.     return (int) (c % 1000000000);
  6.   }

  7.   public static void main(String[] args) {
  8.     System.out.println(LinesDividePlane(45000));. From 1point 3acres bbs
  9.   }.1point3acres缃
  10. }
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 19:18

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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