namespace _977._Squares_of_a_Sorted_Array; public class Solution { public int[] SortedSquares(int[] nums) { int[] res = new int[nums.Length]; int firstNonNegative = -1; for (int i = 0; i < nums.Length; i++) { if (nums[i] >= 0) { firstNonNegative = i; break; } } int resIndex = 0; int positiveIndex = firstNonNegative; int negativeIndex = firstNonNegative != -1 ? positiveIndex - 1 : nums.Length - 1; while (resIndex < nums.Length) { if (negativeIndex >= 0 && positiveIndex < nums.Length && positiveIndex >= 0) { if (nums[negativeIndex] * -1 < nums[positiveIndex]) { res[resIndex++] = nums[negativeIndex] * nums[negativeIndex]; negativeIndex--; } else { res[resIndex++] = nums[positiveIndex] * nums[positiveIndex]; positiveIndex++; } } else if (negativeIndex >= 0) { res[resIndex++] = nums[negativeIndex] * nums[negativeIndex]; negativeIndex--; } else if (positiveIndex >= 0) { res[resIndex++] = nums[positiveIndex] * nums[positiveIndex]; positiveIndex++; } } return res; } }