categories: [Blog,Algorithm]


977. 有序数组的平方

难度简单209
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方组成的新数组,要求也按 非递减顺序 排序。


示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

双指针

  1. public int[] sortedSquares(int[] nums) {
  2. int n = nums.length;
  3. int[] ans = new int[n];
  4. for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {
  5. if (nums[i] * nums[i] > nums[j] * nums[j]) {
  6. ans[pos] = nums[i] * nums[i];
  7. ++i;
  8. } else {
  9. ans[pos] = nums[j] * nums[j];
  10. --j;
  11. }
  12. --pos;
  13. }
  14. return ans;
  15. }
  16. 作者:LeetCode-Solution
  17. 链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/solution/you-xu-shu-zu-de-ping-fang-by-leetcode-solution/

平方再排序

  1. public int[] sortedSquares(int[] nums) {
  2. int[] ans = new int[nums.length];
  3. for (int i = 0; i < nums.length; ++i) {
  4. ans[i] = nums[i] * nums[i];
  5. }
  6. Arrays.sort(ans);
  7. return ans;
  8. }
  9. 作者:LeetCode-Solution
  10. 链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/solution/you-xu-shu-zu-de-ping-fang-by-leetcode-solution/