
数据结构
文章平均质量分 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 · 136 阅读 · 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 · 662 阅读 · 0 评论 -
数据结构--链表实现【JAVA】
1.链表定义物理上非连续,非顺序的数据结构,由若干节点组成2. 分类单向链表:每一个节点包含:一个存放数据的变量data,一个指向下一个节点的指针next。双向链表:双向链表比单向链表多了一个指向前置节点的prev指针。3. 存储结构:数组是顺序存储,链表则是随机存储。对比图如下4. 单链表基本操作6.1 查找节点查找需要从头节点开始,如果查找第三个节点,需要以此访问前两个节点,例图如下:6.2 更新节点首先查找到要更新的节点,直接更新data即可6.3原创 2022-03-26 21:11:51 · 1461 阅读 · 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 · 396 阅读 · 0 评论 -
数据结构基础-数组动态扩容版[JAVA]
数组实现–动态扩容版上篇文章数据结构基础–数组实现[java版]介绍了数组的构建,数组容量是静态的:即初始化的容量满了之后,不能增加数组容量,但JAVA中的数组ArrayList是支持动态扩容的,为了了解动态扩容机制,我们先简单实现一个动态扩容版的数组体验一下。动态扩容策略当数组达到数组最大容量时,进行数组的扩容,即扩大数组的最大容量,这个事件发生在添加元素的函数里。原始add(index,element)函数如下:public void add(int index,int eleme原创 2022-03-20 21:21:33 · 723 阅读 · 0 评论 -
数据结构基础--数组实现[java版]
数组的概念数组是有限个相同类型的变量所组成的有序集合,数组的存储结构如下:数组的存储结构:数组的特点:数组在内存中是顺序存储的,因此数组可以直接通过下标访问元素,读取速度较快,但插入和删除元素为了保证删除后的元素仍然是紧密相连的,会导致大量元素被迫移动,影响效率,因此数组适合:读操作多,写操作少的场景数组在内存中的存储结构:灰色:已被占用绿色:空闲内存此时如果删除元素8,其后的7,9,1都需要前移来保证元素是连续连接的。数组的基本操作有:了解了数组的底层存储结构,来看一下数原创 2022-03-20 16:24:14 · 459 阅读 · 0 评论