360. Sort Transfromed Array
by Botao Xiao
360. Sort Transfromed Array
Question
Given a sorted array of integers nums and integer values a, b and c. Apply a function of the form f(x) = ax2 + bx + c to each element x in the array.
The returned array must be in sorted order.
Expected time complexity: O(n)
Example:
nums = [-4, -2, 2, 4], a = 1, b = 3, c = 5,
Result: [3, 9, 15, 33]
nums = [-4, -2, 2, 4], a = -1, b = 3, c = 5
Result: [-23, -5, 1, 7]
Thinking:
- Method: Priority Queue
public class SortTransformedArray {
public static void sort(int[] nums, int a, int b, int c){
PriorityQueue<Integer> queue = new PriorityQueue<>();
for(int n : nums)
queue.add(a * n * n + b * n + c);
int index = -1;
while(!queue.isEmpty()){
nums[++index] = queue.poll();
}
}
public static void main(String[] args) {
int[] nums = new int[]{-1, 2, 3,-2, 5};
sort(nums, 1, 2, 3);
for(int n : nums)
System.out.println(n);
}
}
Subscribe via RSS