字节跳动一面凉经!
字节跳动一面凉经
上来做一道算法题,题目很简单,但是。。。
题目如下:
输入一个二维数组和一个一维数组,例如
[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)吗??!
然后,没有然后了。。。
大家引以为戒!基础知识要打牢
(谁能告诉我时间复杂度到底是多少。。)