码迷,mamicode.com
首页 > 编程语言 > 详细

leetcode之有序数组的平方

时间:2019-04-14 16:10:10      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:pre   最大的   turn   ret   new   最大   color   有序   指针   

题目描述:

给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

示例 1:

输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]

示例 2:

输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]


解题:
非递减顺序排序的整数数组,如果存在负数,即是说元素平方后,原序列的整体大小情况是:大--小--大,这时候我们采用头尾指针的方式:
头部第一个元素与尾部最后一个元素相互比较,即可得出最大的元素,将这个元素存进辅助数组最大的位置;
头尾相互逼近式比较,直至头尾指针相遇,结束,这时辅助数组里的序列就是我们想要的结果。
class Solution {
    public int[] sortedSquares(int[] A) {
        int len = A.length;
        if (len == 0) return new int[] {0};
        int[] res = new int[len];
        // 利用头尾双指针
        int i = 0;
        int j = len - 1;
        int cur = len-1;
        
        while(j>=i){
            if(A[i]*A[i] > A[j]*A[j]){
                res[cur--] = A[i]*A[i];  //j--
                i++;
            }
            else{
                res[cur--] = A[j]*A[j];
                j--;
            }
        }
        return res;
    }
}

 

leetcode之有序数组的平方

标签:pre   最大的   turn   ret   new   最大   color   有序   指针   

原文地址:https://www.cnblogs.com/lisen10/p/leetcode.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!