leetcode之有序数组的平方
Posted 亦小海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode之有序数组的平方相关的知识,希望对你有一定的参考价值。
题目描述:
给定一个按非递减顺序排序的整数数组 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之有序数组的平方的主要内容,如果未能解决你的问题,请参考以下文章