做算法题首先要先冷静的思考,思路清晰是解题的关键,记录下这个把问题想的超级复杂后轻松求解的过程吧。
题干如下:
给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]
大部分在写这种代码时候都会暴力求解,先算完再来个排序。直接上代码指针操作结果
public static void main(String[] args) { int[] nums= {-4,-1,0,3,10}; int[] res = new int[nums.length]; int maxPoint = nums.length-1; int minPoint = 0; int k = nums.length; while(minPoint <= maxPoint){ k--; if(nums[minPoint] + nums[maxPoint] >0){ res[k] = nums[maxPoint] * nums[maxPoint]; maxPoint --; }else{ res[k] = nums[minPoint] * nums[minPoint]; minPoint++; } } for (int i : res) { System.out.println(i); } }