字节跳动一面凉经!

字节跳动一面凉经

上来做一道算法题,题目很简单,但是。。。
题目如下:
输入一个二维数组和一个一维数组,例如
[1,2,3,4,5]
[1,2,3,4,6]
[6,1,2,3,7]
[0,0,5,3,2]
[1,2,3]
输出[1,2,3]在二维数组中的位置
(0,0)
(0,1)
(1,2)
当时我暗自窃喜,握草这么简单!!!直接遍历啊,然后代码行云流水的写出。。
python代码如下
def print_(arr, x): if not arr:  return  res = [] for i in range(len(arr)): for j in range(len(arr[i])): if x == arr[i][j:j+len(x)]:
                res.append((i,j)) for k in res: print(k)
print_([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]],[1,2,3])
那人明显是java的,看我写python问我会java吗,我说不会。。。
我写完了很是开心,然后他问我时间复杂度。。。!
我想不就是遍历了一遍吗,O(n)啊,他说不对
我又想,二维数组那就O(n*m)吧,还是不对!!
我惊了
然后跟我说第七行的时间复杂度是多少(if x == arr[i][j:j+len(x)]:),这不是列表切片吗,时间复杂度不是O(1)吗??!
然后,没有然后了。。。
大家引以为戒!基础知识要打牢
(谁能告诉我时间复杂度到底是多少。。)


#字节跳动##面经##实习##算法工程师#
全部评论
一般来说,二维数组n行,每行长度为m,一维数组长度为k,时间复杂度应该为O(n*m*k)。但是你用了python列表切片,复杂度为O(k),列表相等比较的时间复杂度也是O(k),所以你的算法复杂度应该是O(n*m*k*k)
点赞 回复 分享
发布于 2019-07-17 17:10
n*m*k吧
点赞 回复 分享
发布于 2019-07-17 17:11
兄弟,你是那个年级有点大的面试官面的不?我7.11号,同一道算法题!!!他给的用例我弄出来了,然后给了一组1 5 5 5 6 4 4 找 5 5 6,完事我写的不好,循环里break掉了,写了30分钟,然后问了一个项目中的点,就说今天就到这里。面试体验好差,他让我自己在那写,自己趴椅子上,好像都没看我coding,那边消息还滴滴响
点赞 回复 分享
发布于 2019-07-19 23:15
一维数组的长度*二维数组的长度,如果数组都是n的话,那就是n^3
点赞 回复 分享
发布于 2019-07-17 16:45
输出123的位置 是输出啥???没看懂
点赞 回复 分享
发布于 2019-07-17 17:04
楼主是什么岗呀
点赞 回复 分享
发布于 2019-07-17 17:24
切片和比较是O(n)啊,怎么可能O(1)呢,python只是简化了代码并不能简化复杂度好吧。。。
点赞 回复 分享
发布于 2019-07-20 19:25
网申的还是内推的啊
点赞 回复 分享
发布于 2019-07-21 15:23
感觉用python做算法题会害人不浅😅
点赞 回复 分享
发布于 2019-07-21 15:55

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
评论
8
40
分享
牛客网
牛客企业服务