# Program to find the most competitive subsequence in Python

PythonServer Side ProgrammingProgramming

#### Beyond Basic Programming - Intermediate Python

Most Popular

36 Lectures 3 hours

#### Practical Machine Learning using Python

Best Seller

91 Lectures 23.5 hours

#### Practical Data Science using Python

22 Lectures 6 hours

Suppose we have an array nums and another value k, we have to find the most competitive subsequence of nums of size k. Here a subsequence s1 is more competitive than a subsequence s2 (of equal size) if in the first position where s1 and s2 differ, subsequence s1 has a number less than the corresponding number in s2.

So, if the input is like nums = [4,6,3,7] k = 2, then the output will be [3,7] because among all subsequences of size 2, {[4,6], [4,3], [4,7], [6,3], [6,7], [3,7]}, the [3,7] is the most competitive.

To solve this, we will follow these steps −

• attempts := size of nums - k
• stack := a new list
• for each num in nums, do
• while stack is not empty and num < top of stack and attempts > 0, do
• pop element from stack
• attempts := attempts - 1
• push num into stack
• return top k elements of stack

## Example

Let us see the following implementation to get better understanding −

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))

## Input

[4,6,3,7], 2


## Output

[3,7]