刷题——数组篇总结


目录

数组基础理论

数组经典题目(思想)

二分法

双指针法

滑动窗口

模拟行为


数组基础理论

数组是存放在连续内存空间上的相同类型数据的集合。

数组是非常基础的数据结构,考察数组的题目一般在思维上都不难,主要考察对代码的掌控能力。

其特性主要有以下两点:

1.数组的下标都是从0开始的

2.数组内存空间的地址是连续的(二维数组的内存空间不一定,看用什么编程语言)

由于特性 2. 所以我们在删除或者增添数组元素的时候就要移动其他元素的位置,即数组元素不能删除,只能覆盖。

 


 

数组经典题目(思想)

数组的题目在思想上一般比较简单,但如果想要高效,并不容易。

以下主要有四种经典类型的题目,每一类型的题目也体现了一种思想。

二分法

leetcode 704.二分查找

在二分查找中主要是遵循循环不变量原则,在循环中坚持对区间的定义,从而来处理细节,这样二分查找才能写清楚。

    相关题目(leetcode):

  • 35. 搜索插入位置
  • 34. 在排序数组中查找元素的第一个和最后一个位置
  • 69. x的平方根
  • 367. 有效的完全平方数

双指针法

leetcdode 27. 移除元素

双指针法(快慢指针法):主要通过一个快指针和一个慢指针在一个for循环下完成两个for循环的工作,快指针遍历数组,慢指针保存需要的元素。一般暴力解法的时间复杂度为O(n^2),而使用双指针法可以降为O(n)。

    相关题目(leetcode):

  • 26. 删除排序数组中的重复项
  • 283. 移动零
  • 844. 比较含退格的字符串
  • 977. 有序数组的平方

滑动窗口

leetcode 209. 长度最小的子数组

这一题主要体现了数组操作中的另一种思想:滑动窗口

滑动窗口的时间复杂度也是O(n)。

滑动窗口的思想,主要明确窗口的内容是什么,窗口通过起始位置的变换,达到动态更新窗口大小的效果,从而得出最小的符合条件的长度。其精髓在于根据当前子序列和其大小情况,不断调节子序列的起始位置。

    相关题目(leetcode):

  • 904. 水果成篮
  • 76. 最小覆盖子串

模拟行为

leetcode 59. 螺旋矩阵II

这一类的题目在数组中也比较常见,不涉及什么算法,就是单纯的模拟,十分考察对代码的掌控能力,同时这一题中叶体现了循环不变量原则

    相关题目(leetcode):

  •  59. 螺旋矩阵

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值