|
发表于 2019-12-13 21:38:39
|
显示全部楼层
本帖最后由 阴阳神万物主 于 2019-12-14 13:07 编辑
是一切双重for都超时吗?
我来一个玩生成器的看看。
- def solve(array:'整数数组',queries:'查询列表')->'最终列表':
- def query():
- nonlocal array
- array.sort(reverse=True)
- le = len(array)
- for each in queries:
- for i in range(le):
- if array[i] < each:
- yield le-i
- break
- else:
- yield 0
- return list(query())
- if __name__ == '__main__':
- print('示例1 输出:',solve([1,2,7,8,5],[1,8,5]))
- print('示例2 输出:',solve([3,4,5,8],[2,4]))
复制代码 我再来个,array 越来越短的看看,似乎时间复杂度为 O(2n)
- def solve(array:'整数数组',queries:'查询列表')->'最终列表':
- le = len(queries)
- res = [0]*le
- array.sort(reverse=True)
- query = sorted(zip(queries,range(le)),key=lambda x:x[0],reverse=True)
- la = len(array)
- for each in query:
- for i in range(la):
- if each[0] > array[i]:
- break
- else:
- i += 1
- array = array[i:]
- la = len(array)
- res[each[1]] = la
- return res
- if __name__ == '__main__':
- print('示例1 输出:',solve([1,2,7,8,5],[1,8,5]))
- print('示例2 输出:',solve([3,4,5,8],[2,4]))
复制代码
|
|