Description
You are given an integer array nums containing distinct numbers, and you can perform the following operations until the array is empty:
- If the first element has the smallest value, remove it
- Otherwise, put the first element at the end of the array.
Return an integer denoting the number of operations it takes to make nums empty.
Β
Example 1:
Input: nums = [3,4,-1] Output: 5
| Operation | Array |
|---|---|
| 1 | [4, -1, 3] |
| 2 | [-1, 3, 4] |
| 3 | [3, 4] |
| 4 | [4] |
| 5 | [] |
Example 2:
Input: nums = [1,2,4,3] Output: 5
| Operation | Array |
|---|---|
| 1 | [2, 4, 3] |
| 2 | [4, 3] |
| 3 | [3, 4] |
| 4 | [4] |
| 5 | [] |
Example 3:
Input: nums = [1,2,3] Output: 3
| Operation | Array |
|---|---|
| 1 | [2, 3] |
| 2 | [3] |
| 3 | [] |
Β
Constraints:
1 <= nums.length <= 105-109Β <= nums[i] <= 109- All values in
numsare distinct.
Solution
Python3
class Solution:
def countOperationsToEmptyArray(self, nums: List[int]) -> int:
N = len(nums)
A = sorted(range(N), key = lambda i : nums[i])
res = N
for i in range(N - 1):
if A[i] > A[i + 1]:
res += N - i - 1
return res