#360
Medium Algorithms Sort transformed array
Array Math Two Pointers Sorting
58.1% acceptance
Mar 31, 2026
705
220
No description available.
Solution
Rust
Time O(n)
Space O(n)
impl Solution {
pub fn sort_transformed_array(nums: Vec<i32>, a: i32, b: i32, c: i32) -> Vec<i32> {
let n = nums.len();
let f = |x: i32| -> i32 { a * x * x + b * x + c };
let mut result = vec![0; n];
let mut left = 0usize;
let mut right = n.wrapping_sub(1);
let mut idx: usize;
if a >= 0 {
idx = n - 1;
while left <= right && right < n {
let fl = f(nums[left]);
let fr = f(nums[right]);
if fl >= fr {
result[idx] = fl;
left += 1;
} else {
result[idx] = fr;
right = right.wrapping_sub(1);
}
idx = idx.wrapping_sub(1);
}
} else {
idx = 0;
while left <= right && right < n {
let fl = f(nums[left]);
let fr = f(nums[right]);
if fl <= fr {
result[idx] = fl;
left += 1;
} else {
result[idx] = fr;
right = right.wrapping_sub(1);
}
idx += 1;
}
}
result
}
}