代码随想录算法练习Day3:有序数组的平方

题目链接:977.有序数组的平方

卡哥的视频链接:双指针法经典题目 | LeetCode:977.有序数组的平方

解题思路:这本就是有序数组,只不过可能有负数,一平方就变成最大的了,现在定义两个指针,

分别位数数组的最左端和最右端,主要作用是调整负数的相对位置。

具体逻辑如下:

  1. 首先,定义两个指针 leftright 分别指向数组的起始位置和末尾位置,同时定义一个新数组 result 用于存放平方后的结果,result数组的大小与原数组相同。

  2. 使用双指针的方法,从数组的两端开始遍历,比较左右指针所指元素的平方大小,并将较大的平方值放入 result 数组中。

  3. 遍历过程中,采用逆序的方式将平方值放入 result 数组中,因为在原数组中,绝对值较大的元素的平方值可能会比较大,所以需要逆序存放。

  4. 遍历完所有元素后,返回 result 数组,即为按非递减顺序排列的每个元素的平方值数组。

代码示例:

最后输出结果为:

总结:本题用双指针的思想解决了数组内元素平方的排序问题,在while循环条件时,注意别漏掉等于条件,否则会漏元素。

注意最开始时的取值。

注意最终输入到新数组中的元素是平方,别忘咯!

  • 17
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值