2164. Sort Even and Odd Indices Independently

sort

T : O(nlogn)

S: O(n)

class Solution {
    public int[] sortEvenOdd(int[] nums) {
        int n = nums.length;
        List<Integer> odd = new ArrayList<>();
        List<Integer> even = new ArrayList<>();
        for (int i = 0 ; i < n; i++) {
            if (i % 2 == 0) { // even, asc
                even.add(nums[i]);
            } else { // odd, desc
                odd.add(nums[i]);
            }
        }
        Collections.sort(odd, (a, b) -> b - a);
        Collections.sort(even);
        int[] res = new int[n];
        int evenIdx = 0;
        int oddIdx = 0;
        for (int i = 0 ; i < n; i++) {
            if (i % 2 == 0) { // even, asc
                res[i] = even.get(evenIdx++); // 0, 2 (i = 0)
            } else { // odd, desc
                res[i] = odd.get(oddIdx++); // 0(i = 1, 3, 5)
            }
        }
        return res;
    }
}

/*
odd -> desc
[4,1,2,3] before this step, it becomes [4,3,2,1]

even -> asc
[4,1,2,3] before this step, it becomes [2,1,4,3]
*/

bucket sort

因為這題數據很小, use bucket sort

T: O(100*n) = O(n)

S: O(202)

Last updated

Was this helpful?