1. 程式人生 > >Leetcode 360: Sort Transformed Array

Leetcode 360: Sort Transformed Array

i++ spa ans orm color time ted new span

Given a sorted array of integers nums and integer values a, b and c. Apply a quadratic 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]

 1 public class Solution {
 2     public int[] SortTransformedArray(int[] nums, int a, int b, int c) {
 3         if (nums == null || nums.Length < 2) return nums;
 4         
 5         var result = new int[nums.Length];
 6         int i = 0, j = nums.Length - 1;
 7         int index = a >= 0
? j : i; 8 9 while (i <= j) 10 { 11 var q1 = Quad(nums[i], a, b, c); 12 var q2 = Quad(nums[j], a, b, c); 13 14 if (a >= 0) 15 { 16 if (q1 >= q2) 17 { 18 i++;
19 result[index--] = q1; 20 } 21 else 22 { 23 j--; 24 result[index--] = q2; 25 } 26 } 27 else 28 { 29 if (q1 <= q2) 30 { 31 i++; 32 result[index++] = q1; 33 } 34 else 35 { 36 j--; 37 result[index++] = q2; 38 } 39 } 40 } 41 42 return result; 43 } 44 45 private int Quad(int x, int a, int b, int c) { 46 return a * x * x + b * x + c; 47 } 48 }

Leetcode 360: Sort Transformed Array