在 Python 中寻找最具竞争力子序列的程序
假设我们有一个数组nums和另一个值k,我们必须找到大小为k的nums中最具竞争力的子序列。如果在s1和s2不同的第一个位置,子序列s1的数字小于s2中的相应数字,则子序列s1比子序列s2(大小相同)更具竞争力。
因此,如果输入类似于nums=[4,6,3,7]k=2,那么输出将是[3,7],因为在所有大小为2的子序列中,{[4,6],[4,3],[4,7],[6,3],[6,7],[3,7]},其中[3,7]最具竞争力。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, k):
attempts = len(nums) - k
stack = []
for num in nums:
while stack and num < stack[-1] and attempts > 0:
stack.pop()
attempts -= 1
stack.append(num)
return stack[:k]
nums = [4,6,3,7]
k = 2
print(solve(nums, k))输入
[4,6,3,7], 2输出结果
[3,7]