每日一题 | LeetCode977 有序数组的平方
题意
难度:简单
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例
输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]
输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]
思路与算法
方法一:直接排序
元组中数平方后直接排序,因为 python 中有 sorted()函数直接排序。所以 python 学得好,代码打得少!
代码
复制代码
方法二:双指针
通过题目件其实我们可以得出,平方以后的最大值肯定出现在两侧,不是左边就是右边(负数的平方为正数) 。首先初始化 left 和 right 指针,新建 res 数组,site 指针指向 res 数组的尾部。
图解如下:
代码实现:
复制代码
版权声明: 本文为 InfoQ 作者【武师叔】的原创文章。
原文链接:【http://xie.infoq.cn/article/a0b8808b706a71ef1278f6487】。文章转载请联系作者。
评论