LeetCode每日一题,538. Squares of a Sorted Array
先看题目描述
大意就是给定一个有序数组,让我们返回各数的平方和,以升序的顺序返回
算法和思路
直接排序法
这个是最容易想到的思路,将数组中各数平方以后,再返回排序后的数组
双指针法
上一个方法虽然很容易想到,但没有利用数组有序的特点,我们可以利用该点,使用双指针法,实现更好的效率,这个方法有点借助了归并排序的思想
算法流程:
- 初始时定义两个指针 i 和 j 分别指向位置 0 和 len - 1
- 每次比较 i 和 j 两个指针对应的数,选择平方后较大的那个数逆序放入答案数组中并移动指针(若指针 i 指向的数大于 0,则直接将指针 j 对应的数逆序放入答案数组中,并移动 j 指针)
- 重复上述过程直至 i 指针和 j 指针相遇
- 最后返回答案数组
算法源码
直接排序法
1 | import java.util.Arrays; |
双指针法
1 | class Solution { |