from collections import deque
import copy
from typing import List
class Solution:
def mostCompetitive(self, nums: List[int], k: int) -> List[int]:
res = []
if not nums:
return res
st = deque()
n = len(nums)
for i,num in enumerate(nums):
while st and num < st[-1][1]:
st.pop()
st.append((i,num))
b = copy.deepcopy(st)
if k <= len(st):
for i in range(k):
res.append(st.popleft()[1])
return res
right = st[-1][0]
while st and len(st) + (n-1-st[-1][0])<k:
right = st.pop()[0]
left = st[-1][0] if st else 0
while st:
res.append(st.popleft()[1])
if left!=0:
left+=1
a = nums[left:right]
return res + self.mostCompetitive(nums[left:right],k-len(res)-(n-right)) + nums[right:]
nums = [84,10,71,23,66,61,62,64,34,41,80,25,91,43,4,75,65,13,37,41,46,90,55,8,85,61,95,71]
k = 24
solution = Solution()
print(solution.mostCompetitive(nums,k))
1673 找出最具竞争力的子序列
最新推荐文章于 2024-06-14 02:02:23 发布