Untitled
unknown
python
2 years ago
1.3 kB
7
Indexable
""" O(a*m) a是indexOf的答案 m是有幾個map 就是给你一个array 比如你想每个数字都加1 就map (i -> i+1)然后你就想要比如第五个数字是啥 这道题应该就是不想让你把每个数字都update Lazy Array 需要注意的是在map后多次indexOf。 并且map之后不能修改原数组,所以地里给的用一个list存functions其实会有问题。 一个例子是LazyArray b = a.map(...), 此时b应该是不保存a中的functions的。 lazy array这题是indexOf的时候对每一个值执行这个list of functions然后如果等于targetValue就返回index吗?? """ class LazyArray: def __init__(self, arr): self.arr = arr self.mapping_func = lambda x : x def map(self, func): lazy_array = LazyArray(self.arr) # create a new LazyArray??!!! lazy_array.mapping_func = lambda x : func(self.mapping_func(x)) return lazy_array def indexOf(self, value): for index, val in enumerate(self.arr): if self.mapping_func(val) == value: return index return -1 arr = [10, 20, 30, 40, 50] lazy = LazyArray(arr) index = lazy.map(lambda x: x * 2).map(lambda x: x * 3).indexOf(240); print("index = ", index) index = lazy.map(lambda x: x * 2).indexOf(40); print("index = ", index) index = lazy.map(lambda x: x * 3).indexOf(30); print("index = ", index)
Editor is loading...