LeetCode-in-Java

2659. Make Array Empty

Hard

You are given an integer array nums containing distinct numbers, and you can perform the following operations until the array is empty:

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:

Solution

import java.util.Arrays;
import java.util.Comparator;

public class Solution {
    public long countOperationsToEmptyArray(int[] nums) {
        int n = nums.length;
        Integer[] arr = new Integer[n];
        for (int i = 0; i < n; i++) {
            arr[i] = i;
        }
        Arrays.sort(arr, Comparator.comparingInt(i -> nums[i]));
        long ans = n;
        for (int i = 1; i < n; i++) {
            if (arr[i] < arr[i - 1]) {
                ans += n - i;
            }
        }
        return ans;
    }
}