聊聊跟三哥三姐面试和共事的经历

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 2740|回复: 11
收起左侧

Google Coaching Hangouts

[复制链接] |试试Instant~ |关注本帖
lqzgz 发表于 2015-10-13 13:41:23 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类General 硕士 全职@Google - Other - 技术电面  | Other | fresh grad应届毕业生

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

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

x
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.


. 围观我们@1point 3 acres
祝大家offer多多!


评分

1

查看全部评分

本帖被以下淘专辑推荐:

hyliu0000 发表于 2015-10-13 22:22:59 | 显示全部楼层
long sum(index) = (0 + nums.length - 1) * nums.length / 2 , 然后看sum是否会减到0.
回复 支持 反对

使用道具 举报

airwindow 发表于 2015-10-13 22:47:56 | 显示全部楼层
以下是我的愚见哈, 不做space优化的solution。
  1. static private boolean checkCircularArray(int[] nums) {
  2.                 if (nums == null). from: 1point3acres
  3.                         throw new IllegalArgumentException("nums's reference is null");
  4.                 int reachedCount = 0;
  5.                 HashSet<Integer> visited = new HashSet<Integer> ();
  6.                 int i = 0;. Waral 博客有更多文章,
  7.                 while (!visited.contains(i + nums[i])) {
  8.                         visited.add(i + nums[i]); 来源一亩.三分地论坛.
  9.                         i = (i + nums[i]) % nums.length; 来源一亩.三分地论坛.
  10.                         reachedCount++;
  11.                 }
  12.                 return reachedCount == nums.length;
  13.         }
复制代码
Test cases:
testcases:
null -> exception;
{} //whether the empty array should be counted as CircularArray, we should discuss with interviewer
{1} -> false;
{2, -1, 1} -> false;
{1, 1, 1} -> true;
{2, -1, -1} -> true;
回复 支持 反对

使用道具 举报

airwindow 发表于 2015-10-13 23:14:18 | 显示全部楼层
不使用HashSet, space complexity为 O(1)的solution。
Main idea: set the visited elements equal to 0.
  1. static private boolean checkCircularArray2(int[] nums) {
  2.                 if (nums == null) {
  3.                         throw new IllegalArgumentException("nums's reference is null");
  4.                 }
  5.                 int i = 0;
  6.                 boolean isStart = true;. more info on 1point3acres
  7.                 int reachedCount = 0;. Waral 博客有更多文章,
  8.                 /*
  9.                 cause we start from nums[0], we should use a "isStart" flag -google 1point3acres
  10.                 to distinguish between it is the first start  or  it was reached.
  11.                 */
  12.                 while (nums[(i + nums[i]) % nums.length] != 0 || isStart) {
  13.                         int next = (i + nums[i]) % nums.length;. visit 1point3acres for more.
  14.                         if (!isStart) {
  15.                                 /*
  16.                                  * no need to worry (nums[i] = 0) in initial input.
  17.                                  * the pointer should stop at in both cases.
  18.                                  * */. Waral 博客有更多文章,
  19.                                 nums[i] = 0;
  20.                         } else {
  21.                                 isStart = false;. Waral 博客有更多文章,
  22.                         }
  23.                         i = next;
  24.                         reachedCount++;
  25.                 }
  26.                 return reachedCount == nums.length;
  27.         }
复制代码
回复 支持 反对

使用道具 举报

 楼主| lqzgz 发表于 2015-10-15 09:09:07 | 显示全部楼层
hyliu0000 发表于 2015-10-13 22:22.1point3acres网
long sum(index) = (0 + nums.length - 1) * nums.length / 2 , 然后看sum是否会减到0.

这么做应该不对,[1, 4, 1]也是circular array
回复 支持 反对

使用道具 举报

 楼主| lqzgz 发表于 2015-10-15 09:09:45 | 显示全部楼层
airwindow 发表于 2015-10-13 22:47
以下是我的愚见哈, 不做space优化的solution。Test cases:
testcases:. 牛人云集,一亩三分地
null -> exception;

[1]是circular array
回复 支持 反对

使用道具 举报

hj867955629 发表于 2015-10-15 23:20:59 | 显示全部楼层
lqzgz 发表于 2015-10-15 09:09
. more info on 1point3acres这么做应该不对,[1, 4, 1]也是circular array
来源一亩.三分地论坛.
加个对数组长度取余,另外index是数组下标加数组value,应该可以
回复 支持 反对

使用道具 举报

tangvictor 发表于 2015-10-16 01:33:15 | 显示全部楼层
Python版代码,如有错误请指出。
  1. def circular(A):
  2.         # corner case
  3.         if A == None or len(A) == 0:
  4.                 return False
  5. .本文原创自1point3acres论坛
  6.         cur = 0
  7.         n = len(A)
  8.         count = 0

  9.         while True:
  10.                 if A[cur] == 0:
  11.                         break

  12.                 next =  (cur + A[cur]) % n
  13.                 A[cur] = 0
  14.                 count += 1
  15.                 cur = next       
  16. .1point3acres网
  17.         return count == n
复制代码
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

@南岸的风 发表于 2015-10-21 01:25:03 | 显示全部楼层
lqzgz 发表于 2015-10-15 09:09. 1point 3acres 论坛
这么做应该不对,[1, 4, 1]也是circular array

楼主可以解释一下为什么[1,4,1]是circular array吗?thanks!
回复 支持 反对

使用道具 举报

 楼主| lqzgz 发表于 2015-10-21 07:12:52 | 显示全部楼层
@南岸的风 发表于 2015-10-21 01:25
楼主可以解释一下为什么[1,4,1]是circular array吗?thanks!

array[1] = 4; (1 + 4) % 3 = 2; 就是说这个移动是个loop
回复 支持 反对

使用道具 举报

 楼主| lqzgz 发表于 2015-10-21 07:13:40 | 显示全部楼层
tangvictor 发表于 2015-10-16 01:33
Python版代码,如有错误请指出。

应该是对的
回复 支持 反对

使用道具 举报

@南岸的风 发表于 2015-10-21 07:26:10 | 显示全部楼层
lqzgz 发表于 2015-10-21 07:12
array[1] = 4; (1 + 4) % 3 = 2; 就是说这个移动是个loop

原来如此,非常感谢!
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2018-5-22 01:28

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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