![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 70
三喂树屋
@三喂树屋
展开
-
剑指Offer 04. 二维数组中的查找-【算法基础】
微信公众号同步更新 欢迎和小白一起成长,985计算机硕士,有任何学习,保研等问题都可以公众号私信留言哦! 微信搜索:三喂树屋 剑指offer刷题系列[04],欢迎一起学习 题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19]原创 2022-04-01 22:29:27 · 110 阅读 · 0 评论 -
数组中重复的数字--【算法基础】
剑指offer刷题系列,欢迎一起学习 一、题目描述 找出数组中重复的数字。 具体描述 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 输入: [3,2,4,6,2,4,7,9] 输出:2 或 4 思路 这个解题思路比较清晰,从数组起始位置开始循环,然后使用另外一个数据结构保存每个数字出现的次数,可以是数组,map,但是最合适的还是set。 se.原创 2022-03-29 21:46:58 · 628 阅读 · 0 评论 -
数据结构--链表实现【JAVA】
1.链表定义 物理上非连续,非顺序的数据结构,由若干节点组成 2. 分类 单向链表:每一个节点包含:一个存放数据的变量data,一个指向下一个节点的指针next。 双向链表:双向链表比单向链表多了一个指向前置节点的prev指针。 3. 存储结构: 数组是顺序存储,链表则是随机存储。对比图如下 4. 单链表基本操作 6.1 查找节点 查找需要从头节点开始,如果查找第三个节点,需要以此访问前两个节点,例图如下: 6.2 更新节点 首先查找到要更新的节点,直接更新data即可 6.3原创 2022-03-26 21:11:51 · 1413 阅读 · 0 评论 -
Java ArrayList动态扩容机制
手把手看源码 上篇实现了一个动态扩容数组,扩容原理大致相同,但比起java实现的扩容机制,还是有很大不同, 下面我们看一下java中ArrayList的扩容机制。 ArrayList: 1. 可动态修改的数组 2. 没有固定大小的限制 在add()函数处打个断点,开始debug起来! 然后点击:Force Step Into 首先进入的是自动装箱机制: 点击 Step into跳回到add这里 再次点击Force Step Into,进入add函数 从函数名字也能看出ensureCapacit原创 2022-03-24 23:23:24 · 330 阅读 · 0 评论 -
数据结构基础-数组动态扩容版[JAVA]
数组实现–动态扩容版 上篇文章数据结构基础–数组实现[java版]介绍了数组的构建,数组容量是静态的:即初始化的容量满了之后,不能增加数组容量,但JAVA中的数组ArrayList是支持动态扩容的,为了了解动态扩容机制,我们先简单实现一个动态扩容版的数组体验一下。 动态扩容策略 当数组达到数组最大容量时,进行数组的扩容,即扩大数组的最大容量,这个事件发生在添加元素的函数里。 原始add(index,element)函数如下: public void add(int index,int eleme原创 2022-03-20 21:21:33 · 681 阅读 · 0 评论 -
数据结构基础--数组实现[java版]
数组的概念 数组是有限个相同类型的变量所组成的有序集合,数组的存储结构如下: 数组的存储结构: 数组的特点: 数组在内存中是顺序存储的,因此数组可以直接通过下标访问元素,读取速度较快,但插入和删除元素为了保证删除后的元素仍然是紧密相连的 ,会导致大量元素被迫移动,影响效率,因此数组适合:读操作多,写操作少的场景 数组在内存中的存储结构: 灰色:已被占用 绿色:空闲内存 此时如果删除元素8,其后的7,9,1都需要前移来保证元素是连续连接的。 数组的基本操作有: 了解了数组的底层存储结构,来看一下数原创 2022-03-20 16:24:14 · 396 阅读 · 0 评论