Untitled
unknown
python
2 years ago
1.3 kB
8
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...