力扣-977题(Java)-双指针
作者:互联网
题目链接: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;
}
}
标签:977,Java,nums,int,力扣,++,array,pos2,pos1 来源: https://blog.csdn.net/qq_40467670/article/details/116325959