题目描述
示例1
示例2
做题思路
代码1(暴力解法)
class Solution {
public int[] sortedSquares(int[] nums) {
for(int i=0;i<nums.length;i++){
nums[i]=nums[i]*nums[i];
}
for(int j=0;j<nums.length;j++){
for(int k=j+1;k<nums.length;k++){
int temp;
if(nums[j]>nums[k]){
temp=nums[j];
nums[j]=nums[k];
nums[k]=temp;
}
}
}
return nums;
}
}
代码2(双指针)
class Solution {
public int[] sortedSquares(int[] nums) {
int head=0;//指向nums起始位置
int tail=nums.length-1;//指向nums终止位置
int[] result=new int[nums.length];//定义新数组用来存储最后结果
int index=result.length-1;//指向新数组的终止位置
while(head<=tail){
if(nums[head]*nums[head]>nums[tail]*nums[tail]){
result[index]=nums[head]*nums[head];
index--;
head++;
}else{
result[index]=nums[tail]*nums[tail];
index--;
tail--;
}
}
return result;
}
}