力扣数组专题总结

刷了差不多14天两个礼拜的数组题了,一天刷两道总共28题,做个总结8…

一. 数组
题目分类 题目编号
①数组的遍历 485、495、414、628
②统计数组中的元素 645、697(未完成)、448、442、41、274
③数组的改变、移动 453、665、283
④二维数组及滚动数组 118、119、661、598、419
⑤数组的旋转 189、396(未完成)
⑥特定顺序遍历二维数组 54、59、498(未完成)
⑦二维数组变换 566、48、73、289
⑧前缀和数组 303、304、238

①首先是数组的遍历这四个题,基本上都写出来了,值得学习的是使用双指针的方式去遍历数组元素,以及在遍历数组的时候,要学会合理的使用数据结构来存储元素,比如第三大的数那题,利用树的结构就可以优化时间复杂度。还有最重要的就是判空以及越界处理,这个经常没注意到被样例卡。

②在统计数组元素这6个题中,完成了五个题;依然是值得多去学习数据结构,Java中的集合学完后需要实践出来,需要去应用。在找出消失数字和找出重复的数字这类题中,学会了一个新方法去解题,利用数组元素和下标的关系可以在原数组上进行操作,不用申请额外的空间。

③数组的改变、移动这三个题中,学会了正难则反的思想,从另一个角度去分析问题可以简化问题,这三个题中依然有用到双指针的思想。

④在二维数组这几个题中,通过杨辉三角Ⅱ这题学会了利用数组来存放每一次的遍历,然后再去迭代更新数组,可以节省空间。为了防止产生空指针异常,书写的时候需要这样子写↓,这是个好习惯

if(ops == null || ops.length == 0){
	return m * n;
}

⑤在数组的旋转这类题中,利用翻转可以很巧妙的达到目的,并且优化时间复杂度,这种思想很值得学习。

⑥在特定顺序遍历二维数这几道题中,巩固了DFS算法。

⑦在二维数组变换这几题中,在矩阵置零题中有一种很好的思想就是用matrix第一行和第一列记录该行该列是否有0,作为标志位,然后再去改变数组中元素的值,值得学习。在生命游戏里,学会了利用位运算来更改下一个状态,因为int是4个字节32个位,可以存储32个比特位。

⑧在前缀和数组这三个题中,因为多次调用方法所以可以用动态规划的方法来写(虽然前两题我直接用暴力法了…),通过理解前缀数组和后缀数组以及结果数组之间的关系,可以更好的节省空间,值得学习。

差不多就是这样了,虽然是数组专题,但是还是能发现自己有很多的算法思想值得学习的,通过这28题数组题,学会了很多东西,值得时常来回顾复习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值