求大神帮个忙看看这个狗家电面挂点在哪里。

avatar 352225
a289206397
5690
25
上个星期面的狗家电面。刚刚收到邮件挂了,但是真的不知道挂点在哪里。
开始5分钟聊了聊简历,没有很特别的地方。
然后做的题,做题的时候我是先和面试官沟通我的想法,然后再问了下可以写code再动手的。
写的code虽然没有BUG free,但是是一个很小的bug,把那一行代码换了个位置就没问题了。
还有一个小瑕疵是有一个多余的if statement,提醒后改掉。
不知道这两个是不是挂点。
以及后来的follow up代码已经写出来了但是没有时间讨论,这样是不是也是挂点呢?

---------------------------
当时的题目是这样的,5X5的grid,每个row固定一个数字范围,里面5个数都必须在这个范围内而且不重复。
row 0 : 1- 15
row 1 : 16 - 30
row 2 : 31 - 45
row 3 : 46- 60
row 4 : 60 - 75
我当时的解法是很简单,大概是这样的
for (int i = 0; i < 5; i++) {
unordered_set set;
for (int j = 0; j < 5; j++) {
int num = helper();
set.insert(num);
matrix[i][j] = num;
}
}

int helper(unordered_set &set, int row) {
int num = (rand() % 15) + (row * 15);
if (set.find(num) != set.end()) helper(set, row);
return num;
}


follow up是写个function会返回N个这样的5X5的grid,然后要求是每个matrix里的row都不一样。
大概代码最核心的是我把每个row都变成string,然后放进hashmap里面。下一个matrix在出来的时后先查找当前row的value,有一样的就再重新call一次
  • 5
25条回复