题目链接

有序数组的平方

题目描述

image.png

解题思路

双指针思想:因为结果数组的最大值只可能在原数组开头或者末尾;依次进行头尾双指针遍历即可得到结果数组的非递减顺序;

实现代码:

  1. class Solution {
  2. public int[] sortedSquares(int[] nums) {
  3. int n = nums.length;
  4. int[] ans = new int[n];
  5. for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {
  6. if (nums[i] * nums[i] > nums[j] * nums[j]) {
  7. ans[pos] = nums[i] * nums[i];
  8. ++i;
  9. } else {
  10. ans[pos] = nums[j] * nums[j];
  11. --j;
  12. }
  13. --pos;
  14. }
  15. return ans;
  16. }
  17. }