Day2 数组part2

Day2 数组part2

一、有序数组的平方

题目见Leetcode-977

可以直接平方之后再排序,但是观察可以发现:平方之后最大的数不是最左边的数,就是最右边的数

因此,可以考虑使用双指针 → 分别指向输入数组的左右两侧,平方比较之后,用另一个新的指针由右向左赋值在新开辟的内存空间中,这样的时间复杂度是O(n)

while循环的终止条件是left≤right


二、最小长度子数组

题目见Leecode-209

要求得到子数组元素和≥target的最短子数组

想法很自然使用双指针 → 快慢指针维护一个刚刚好满足子数组和≥target的边界,一但满足(fast指针走多了),缩短左边界(slow指针左移动),每次记录满足要求时数组的最小长度,数组不满足题意时,fast指针接着往后走,将数组做大。

宏观上,这个滑动窗口左右反复伸缩,窗口长度变化,但内部子数组数值和始终在满足条件的临界

需要注意的是,在while判断fast指针没有到达最右侧边界的外层循环中:

fast = fast + 1的自增操作要放在最后一句话,否则循环内层再次使用fast会产生index越界的问题

此外,满足条件的子数组长度是fast-slow+1,不要忘记+1


三、螺旋数组填充

题目见Leetcode-59

这道题很考验技巧性,这里的题解很直观:

https://leetcode.cn/problems/spiral-matrix-ii/solutions/12594/spiral-matrix-ii-mo-ni-fa-she-ding-bian-jie-qing-x/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值