977 有序数组的平方-简单

题目:

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

分析:

对撞指针,因为可能存在负数,所以两头的平方比较大

// date 2021/03/13
func sortedSquares(nums []int) []int {
    n := len(nums)
    res := make([]int, n, n)
    left, right := 0, n-1
    idx := n-1

    for left <= right {
        if left == right {
            res[idx] = sqar(nums[left])
            break
        }
        sl, sr := sqar(nums[left]), sqar(nums[right])
        if sr > sl {
            res[idx] = sr
            right--
        } else {
            res[idx] = sl
            left++
        }
        idx--
    }

    return res
}

func sqar(x int) int {
    return x*x
}

最后更新于