数据结构与算法(数组)~ 介绍数组以及力扣上几道数组题目的方法和套路

Posted 一乐乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法(数组)~ 介绍数组以及力扣上几道数组题目的方法和套路相关的知识,希望对你有一定的参考价值。

数据结构与算法(数组)~ 介绍数组以及力扣上几道数组题目的方法和套路

 

1,数组的数据结构 【没啥好说的哈哈哈,可以说一下动态数组哈哈哈】

动态数组:(可以动态改变数组的长度)

(1)基本实现(组成):内部有数组的引用(开始是初始化指向为某个定长的数组),当需要动态改变数组长度时,其实是定义另外一个长度的定长数组,把原先数组的引用指向新创建的数组(然后把老数组的数据,进行遍历复制到新数组中)。

 

自己动手实现:定义了一个动态数组(含有数组引用和数组长度):

(2)数组主要的功能(增删改查):定义一些接口方法

 (3)过程中进行重构链表,将 增删改查 或者一些通用的接口或者属性封装到外部抽象类或者接口(方便设计给其他类用这样子):

  

 (整个版本一的链表过程如此)

过程中增删改查实现的具体代码就 略。。。

● 增加:可以在任意一个位置进行增加结点

● 删除:可以在任意一个位置进行删除结点

● 修改:可以在任意一个位置进行修改结点

● 查找:可以查找任意一个位置的结点

✿ 升级版本(实现自动缩容的功能、实现优化利于空间,定义一个指针循环利用数组的空间)

 

2,数组的力扣算法题:

 

 总结一些小套路吧 (没有通用的套路,就讲一下方法哈):

 

 (1)1_两数之和 的方法 :

方法一:暴力枚举(两层循环)

方法二:哈希表 【数组元素, 下标】

 

(2)接下来的几道题可以直接看文章(它们具有某种共性):

 

双指针(使用题目:求子数组(可能是连续的或者是数组中某两个或某三个之和(积等等)等于某个值)特点分析【切记每道题目的分析都要切合题意】》

11,盛最多水的容器

42,接雨水

57,和为s的连续正数序列

15,三数之和

209,长度最小的子数组

53,最大子序和

 

(3)121_买卖股票的最佳时机:
方法一:一次遍历(在此遍历的过程中不断的更新找到最低点(最低点作为买点), 后续的非最低点,则考虑是否可以作为卖点)

 

(4)4_寻找两个正序数组的中位数:

方法一:先从小到大合并,然后再找中间的那个数。

数据结构与算法(二叉搜索树)~ 介绍二叉搜索树以及力扣上几道二叉搜索树题目的方法和套路

数据结构与算法(二叉搜索树)~ 介绍二叉搜索树以及力扣上几道二叉搜索树题目的方法和套路


1,二叉树的数据结构:

请参考文章:《数据结构与算法(二叉树)~ 介绍二叉树以及力扣上几道二叉树题目的方法和套路~ 第一部分

❀ 二叉搜索树的特点:

● 整个二叉搜索树非常有特点,根大于左子树, 小于右子树

● 二叉搜索数的中序遍历是有序的~升序的

✿ 总结一些小套路吧 (没有通用的套路,就讲一下方法哈):

(1)108_将有序数组转换为二叉搜索树 的方法 和 套路:

方法一:利用二叉搜索树特点:根大于左,小于右【将数组不断地按中间点划分成左右子树】


(2)173_二叉搜索树迭代器 的方法 和 套路:

方法一:迭代器(容器,提前存储了按照一定规则摆放的数据~ 中序遍历(递归)),然后定义一个全局索引变量来辅助是否有next和进入next

方法二:迭代器(容器,提前存储了按照一定规则摆放的数据~ 中序遍历(迭代)),然后定义一个全局索引变量来辅助是否有next和进入next~因为题意要最小的,所以next方法,next到最后一层后【左为null】,该值【根】便是所求,然后切换到右边


(3)230_二叉搜索树中第K小的元素 的方法 和 套路:

方法一:中序遍历【递归法~辅助变量,递归到第k次 便是所求】

方法二:中序遍历【迭代法~辅助变量,pop掉k个数,便是所求】


(4)450_删除二叉搜索树中的节点 的方法 和 套路:

方法一:

        //删除值大于 根值,则只能在左子树删除目标,删除值小于根值,只能子啊右子树删除目标。

       //当删除的目标就是根值时,考虑:① 根是叶子 【根置空】 ② 有右子树 【根用后驱结点值覆盖,然后对右子树的重复结点进行删除】

       ③ 没有右子树【只能到左子树找了,根用前驱结点值覆盖,然后对左子树的重复结点进行删除】


(5)530_二叉搜索树的最小绝对差 的方法 和 套路:

方法一:

方法二:

套路一:

(6)700_二叉搜索树中的搜索 的方法 和 套路:

方法一:

方法二:

套路一:

(7)701_二叉搜索树中的插入操作 的方法 和 套路:

方法一:

方法二:

套路一:

(8)783_二叉搜索树节点最小距离 的方法 和 套路:

方法一:

方法二:

套路一:

(9)938_二叉搜索树的范围和 的方法 和 套路:

方法一:

方法二:

套路一:

(10)98_验证二叉搜索树 的方法 和 套路:

方法一:

方法二:

套路一:

(11)99_恢复二叉搜索树 的方法 和 套路:

方法一:

方法二:

套路一:

以上是关于数据结构与算法(数组)~ 介绍数组以及力扣上几道数组题目的方法和套路的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法(栈)~ 介绍栈以及力扣上几道栈题目的方法和套路

数据结构与算法(二叉树)~ 介绍二叉树以及力扣上几道二叉树题目的方法和套路

❤️思维导图整理大厂面试高频数组15: 介绍Entry类和海象运算符, 哈希表解决最短连续子数组, 力扣697❤️

❤️思维导图整理大厂面试高频数组15: 介绍Entry类和海象运算符, 哈希表解决最短连续子数组, 力扣697❤️

数组: 两数之和II有序数组, 多个有序, 思路全变, 力扣167

数组: 你还在用暴力法解 两数之和 吗? 力扣1