有序数组的平方

Bernie


Bernie
有序数组的平方
思路:
双指针,左指针指向数组的最小值,右指针指向数组的最大值, 然后左指针小于或者等于右指针进行循环,如果左指针的平方大于右指针的平方, 则将左指针的平方放到结果数组中的最右位置,,然后左指针+1,结果数组最右指针-1, 否则将右指针的平方放到结果数组中的最右位置,然后右指针-1,结果数组最右指针-1,最后返回结果数组即可。
typescript 解法
function sortedSquares(nums: number[]): number[] {
const numsLength = nums.length;
let left = 0;
let right = numsLength - 1;
let rightIndex = right;
let result: number[] = new Array(numsLength);
while (left <= right) {
let leftSquare = nums[left] * nums[left];
let rightSquare = nums[right] * nums[right];
if (leftSquare > rightSquare) {
result[rightIndex] = leftSquare;
left++;
} else {
result[rightIndex] = rightSquare;
right--;
}
rightIndex--;
}
return result;
}
go 解法
func sortedSquares(nums []int) []int {
lenN := len(nums)
left := 0
right := lenN - 1
res := make([]int, lenN)
resIndexx := lenN - 1
for left <= right {
leftPower := nums[left] * nums[left]
rightPower := nums[right] * nums[right]
if leftPower > rightPower {
res[resIndexx] = leftPower
left ++
resIndexx --
} else {
res[resIndexx] = rightPower
right --
resIndexx --
}
}
return res
}