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?