题目链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/
题目如下:
class Solution { public int[] sortedSquares(int[] nums) { //题目中数组已是升序排序 //找出数组中负数和非负数的分界线 //如果全是非负数,则平方后升序;如果全是负数,则平方后为倒序 int len=nums.length; int pos=-1; for(int i=0;i<len;i++) if(nums[i]<0) pos=i; else break; int[] array=new int[len]; int pos1=pos,pos2=pos+1;//第一部分:0~pos1 第二部分:pos2~len-1 for(int i=0;i<len;i++) nums[i]=nums[i]*nums[i]; if(pos==-1) return nums;//全为正数 int j=0; while(pos1>=0&&pos2<len){ if(nums[pos1]>nums[pos2]) array[j++]=nums[pos2++]; else if(nums[pos1]<nums[pos2]) array[j++]=nums[pos1--]; else {array[j++]=nums[pos1--];array[j++]=nums[pos2++];} } while(pos1>=0) array[j++]=nums[pos1--]; while(pos2<len) array[j++]=nums[pos2++]; return array; } }