Less than 1 minute

alt text

// 2602. 使数组元素全部相等的最少操作次数
class Solution {
    public List<Long> minOperations(int[] nums, int[] queries) {
        Arrays.sort(nums);  // 排序,为了二分查找
        int n = nums.length;
        long[] sums = new long[n + 1];
        sums[0] = 0;
        for (int i = 0; i < nums.length; i++) {
            sums[i + 1] = nums[i] + sums[i];
        }
        List<Long> result = new ArrayList<>();
        for (int query : queries) {
            int index = binarySearch(nums, query);
            long left = (long) index * query - sums[index];
            long right = sums[n] - sums[index] - (long) (n - index) * query;
            result.add(left + right);
        }
        return result;
    }

    // leftmost i版
    public int binarySearch(int[] nums, int target) {
        int i = 0, j = nums.length - 1;
        while (i <= j) {
            int m = (i + j) >>> 1;
            if (target <= nums[m]) {
                j = m - 1;
            } else {
                i = m + 1;
            }
        }
        return i;
    }
}