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

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

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


 

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

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

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

 

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

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


24.png


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


25.png


26.png


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

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

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

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

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

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

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

 

2,数组的力扣算法题:


27.png


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

 

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

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

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

 

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

 

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

11,盛最多水的容器

42,接雨水

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

15,三数之和

209,长度最小的子数组

53,最大子序和

 

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

 

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

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

目录
相关文章
|
3月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
181 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
8月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
487 6
|
9月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
151 3
|
4月前
|
存储 监控 算法
关于员工上网监控系统中 PHP 关联数组算法的学术解析
在当代企业管理中,员工上网监控系统是维护信息安全和提升工作效率的关键工具。PHP 中的关联数组凭借其灵活的键值对存储方式,在记录员工网络活动、管理访问规则及分析上网行为等方面发挥重要作用。通过关联数组,系统能高效记录每位员工的上网历史,设定网站访问权限,并统计不同类型的网站访问频率,帮助企业洞察员工上网模式,发现潜在问题并采取相应管理措施,从而保障信息安全和提高工作效率。
59 7
|
5月前
|
存储 人工智能 算法
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
179 23
|
6月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
1009 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
8月前
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
238 1
|
8月前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
307 0
|
9月前
|
Java C++ 索引
让星星⭐月亮告诉你,LinkedList和ArrayList底层数据结构及方法源码说明
`LinkedList` 和 `ArrayList` 是 Java 中两种常见的列表实现。`LinkedList` 基于双向链表,适合频繁的插入和删除操作,但按索引访问元素效率较低。`ArrayList` 基于动态数组,支持快速随机访问,但在中间位置插入或删除元素时性能较差。两者均实现了 `List` 接口,`LinkedList` 还额外实现了 `Deque` 接口,提供了更多队列操作。
115 3
|
9月前
|
算法 索引
HashMap扩容时的rehash方法中(e.hash & oldCap) == 0算法推导
HashMap在扩容时,会创建一个新数组,并将旧数组中的数据迁移过去。通过(e.hash & oldCap)是否等于0,数据被巧妙地分为两类:一类保持原有索引位置,另一类索引位置增加旧数组长度。此过程确保了数据均匀分布,提高了查询效率。
144 2

热门文章

最新文章