You are given an integer array nums containing distinct numbers. Your goal is to completely empty the array using a specific set of operations.

Operations allowed:

  • If the first element has the smallest value in the entire array, remove it
  • Otherwise, move the first element to the end of the array

Return the total number of operations needed to make the array empty.

Example: For array [3, 4, 1, 2]:

  1. First element is 3 (not smallest), move to end → [4, 1, 2, 3]
  2. First element is 4 (not smallest), move to end → [1, 2, 3, 4]
  3. First element is 1 (smallest), remove → [2, 3, 4]
  4. Continue until empty...

This problem tests your understanding of array manipulation, sorting concepts, and optimization techniques.

Input & Output

example_1.py — Basic Case
$ Input: [3, 4, 1, 2]
Output: 8
💡 Note: Operations: [3,4,1,2] → [4,1,2,3] → [1,2,3,4] → [2,3,4] → [3,4,2] → [4,2,3] → [2,3,4] → [3,4] → [4,3] → [3] → []. Total: 8 operations
example_2.py — Already Sorted
$ Input: [1, 2, 3, 4, 5]
Output: 5
💡 Note: Array is already sorted, so we can remove each element immediately without any rotations. Each removal takes 1 operation, total: 5 operations
example_3.py — Reverse Sorted
$ Input: [4, 3, 2, 1]
Output: 10
💡 Note: Worst case where smallest element is at the end. Need maximum rotations: 3 rotations + 1 removal for element 1, then continue with remaining elements

Constraints

  • 1 ≤ nums.length ≤ 105
  • 1 ≤ nums[i] ≤ 109
  • All elements in nums are distinct
  • The array contains at least one element

Visualization

Tap to expand
Priority Queue Service SystemServiceCounterQueue Line3First41Priority!2Person 3 goes first → 2 cycles neededOperations Count:• Cycle person 3 to back: 1 operation• Cycle person 4 to back: 1 operation• Serve person 1: 1 operation• Continue for remaining people...Total: 8 operations
Understanding the Visualization
1
Initial Queue
People with tickets [3, 4, 1, 2] line up
2
Check Priority
Person with ticket 3 is first, but person with ticket 1 has priority
3
Cycle Queue
Person with ticket 3 goes to back, then person with ticket 4
4
Serve Customer
Person with ticket 1 is now first and gets served
5
Repeat Process
Continue until everyone is served
Key Takeaway
🎯 Key Insight: Instead of simulating the actual queue movements, we can mathematically calculate the total operations by determining the removal order (via sorting) and computing how many rotations each element needs based on its position relative to previously removed elements.
Asked in
Google 45 Amazon 38 Microsoft 32 Meta 28
28.9K Views
Medium-High Frequency
~25 min Avg. Time
850 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen