头条笔试研发凉凉
第一题,广度遍历
def func(***):
if len(***) < 1:
return 0
res = 0
order = [
[0, 1], [1, 0], [-1, 0], [0, -1]
]
***_len = len(***)
p = 2
while True:
flag = False
for i in range(***_len):
for j in range(len(***[0])):
if ***[i][j] == p:
for ord in order:
x = ord[0] + i
y = ord[1] + j
if x < 0 or y < 0 or x >= ***_len or y >= len(***[0]):
continue
if ***[x][y] == 1:
flag = True
***[x][y] = p+1
p += 1
if flag:
res += 1
else:
break
for i in range(***_len):
for j in range(len(***[0])):
if ***[i][j] == 1:
return -1
return res
if __name__ == "__main__":
*** = []
while True:
row = input().strip()
if len(row) < 1:
break
***.append(list(map(int, row.split(' '))))
print(func(***))
自测用例如下:
[] 预期 0, 返回 0
[1] 预期 -1, 放回-1
[0] 预期 0, 返回 0
[1 0] 预期 -1 返回 -1
[
[1],
[2],
[0]
] 预期 1 返回 1
[
[1],
] 预期 -1, 返回 -1
[
[1, 0],
[2, 0],
[1, 0]
] 预期 1 返回 1
[
[1, 1],
[1, 0],
[0 ,2]
] 预期 -1 返回 -1
[
[1, 2, 0],
[1, 0, 1],
[0, 0, 2]
] 预期 2 返回2
明明自测都过了, 提交一直0%, 有没有大佬知道还有啥情况需要测
第三题
class Solution {
public:
int func(vector<int>& ***) {
int res = 0;
for (int i = ***.size() - 1; i >= 0; --i)
{
int t = res + ***[i];
res = (t >> 1) + (t & 1);
}
return res;
}
}
第四题,暴力深度遍历,50%
总结,凉凉