题目表述
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
难点分析和解法
对于这道题,自然而想想到暴力解法,一个循环来给数组每个元素平方;再调用排序算法。时间复杂度为排序时间复杂度,最低为o(nlogn)。
本题难点在于降低时间复杂度,用双指针方法。
双指针法
题目数组为非递减序列,平方之后分析数组元素大小可知,按照整个数组排列顺序,从两边到中间减小,类似于一个“凹坑”。因此引入双指针法,从数组两端依次向中间比较靠拢,将较大的元素赋值给新数组,即新数组从后往前赋值。