首页 > 编程语言 > 详细

leetcode-有序数组的平方

时间:2021-07-03 15:46:56      阅读:24      评论:0      收藏:0      [点我收藏+]
  1. 有序数组的平方
    链接:leetcode
    给你一个按非递减顺序 排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序 排序。
    最直接的做法就是从头遍历整个数组,将遍历到的元素的平方存入一个新数组,组后将新数组排序
    public int[] sortedSquares(int[] nums) {
        int[] res = new int[nums.length];
        int i = 0;
        for (int x : nums) {
            res[i++] = x * x;
        }
        Arrays.sort(res);
        return res;
    }

也可以采用双指针,由于数组是非递减顺序排序,所以,在数组的最左边或者最右边的元素的平方一定是最大的,往中间,越来越小,因此,可以创建一个新数组,从后往前填充。

    public int[] sortedSquares(int[] nums) {
        int[] ans = new int[nums.length];
        int i = 0, j =nums.length - 1, k = nums.length - 1;
        while(k >= 0) {
            if(Math.abs(nums[i]) > Math.abs(nums[j])){
                ans[k--] = nums[i] * nums[i++];
            } else{
                ans[k--] = nums[j] * nums[j--];
            }
        }
        return ans;
    }

技术分享图片

leetcode-有序数组的平方

原文:https://www.cnblogs.com/supercute/p/14965999.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!