我写了一个代码来从 python 列表中获取非递减子序列
lis = [3, 6, 3, 8, 6, 4, 2, 9, 5]
ind = 0
newlis = []
while ind < len(lis):
minele = min(lis[ind:])
newlis.append(minele)
ind = lis.index(minele) + 1
print(newlis)
虽然它似乎与我尝试过的测试用例一起工作得很好,但有没有更有效的方法来做到这一点,因为对于列表已经排序的情况,这段代码的最坏转换时间复杂度是 O(n^2),假设内置的 min 方法使用线性搜索。
更准确地说,我想要最长的非递减子列表,并且子列表应该从列表的最小元素开始。并且通过子列表,我的意思是元素不需要在给定的原始列表(lis)中连续延伸。
梦里花落0921
相关分类