数组

地址连续;数组的元素不能删除、只能覆盖!

在排序数组中,常用到 二分查找的方法;

移除元素时需要覆盖掉原来的元素;

使用双指针进行问题的解决(有序数组的平方、长度最小的子数组)滑动窗口

数组中数学逻辑的模拟很重要(螺旋数组Ⅱ);

注意一个重要的 概念:循环不变量;注意左闭右闭和左闭右开的情况,来设定循环时的判定条件,注意将所有的情况都包含进来!

链表:

链表中最重要的就是 虚拟头节点(哨兵节点),对头节点的处理很方便,解决了头节点相对于其他节点的特殊性;

设置一个 前置节点pre,进行之前节点的记录很重要;在反转链表中使用到;

链表中的双指针使用:!

重要的点:指针所走的步数 之和,可以作为双指针重要的判断指标;

删除链表中倒数第N个节点:快慢指针,快指针先走 N步,然后快慢指针同时走!

链表相交先在自己的链表中走,走完去另一个链表中寻找,将节点相等作为判定条件!注意可以拿到 null,作为终止循环的条件!

环形链表Ⅱ:使用快慢指针,快指针每次走两步,慢指针每次走一步,有环肯定会相遇;无环肯定不会相遇!相遇后再判断数学关系!

链表中的 节点相等 可以作为一个重要的判断条件!环一定在链表尾部!

哈希表:

数组、Set、Map三种哈希表结构:用索引确定位置,查找的时间复杂度都是 O(1)

数组:在哈希表的长度确定时,比如 全是小写字母,就是26;可以使用!

Set(集合):不会出现重复的元素,可以去重

Map(映射):键值对 Key-Value的形式存储,不会出现一样的键值对!

数组作为哈希表:遇到判断字符串相等与否的情况,就是用26长度的数组作为哈希表;统计字符串中字符的数量,进行比较!有效的字母易位词、赎金信

使用Set:两个数组的交集,只记录数值!快乐数!需要进行一个数字每个位置上的值的 四则运算

while (n > 0) {int temp = n % 10;res += temp * temp;n = n / 10;
}

使用Map:两数之和(需要记录下标);三数之和、四数之和(需要使用双指针降低时间复杂度)!三个和的问题,都是在同一个数组中!

四数相加:用的四个数组,只用折半,将四次方的时间复杂度变为二次方!要使用Map,记录出现的次数!

遍历枚举中,下一层只需要从上一层 i 的 i +  1处开始即可,就已经包含了所有的情况!

数组、链表、哈希表(数据结构)-代码随想录相关推荐

  1. 常见数据结构-栈-队列-数组-链表-哈希表

    数据结构   数据结构是计算机存储.组织数据的方式.是指相互之间存在一种或多种特定关系的数据元素的集合   通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 持续更新,学一个记一个- 栈 ...

  2. 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)

    目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...

  3. 【Leetcode 专题五】数组和哈希表

    目录 一.前言 二.解题思路和代码整理 2.1.数组重建 Leetcode283. 移动零 Leetcode27. 移除元素 Leetcode26. 删除有序数组中的重复项 2.2.数组双指针 Lee ...

  4. 【翻译】Programming Ruby——数组,哈希表和控制结构

    数组和哈希表 Ruby的数组和哈希表是索引集合.两都都是保存对象集合并能通过键来读取.数组的键是数字,但是哈希表则支持对象作为键.它们都是随着新元素的加入要增长.在访问元素方面,数组效率比较高,但哈希 ...

  5. 手撸数据结构之线性链表---哈希表(散列) Hash

    哈希数据结构 哈希表的存在是为了解决能通过O(1)时间复杂度直接索引到指定元素. 这是什么意思呢?通过我们使用数组存放元素,都是按照顺序存放的,当需要获取某个元素的时候,则需要对数组进行遍历,获取到指 ...

  6. Java算法学习1——链表、数组与哈希表

    一.链表与哈希表的知识点讲解 1.链表 (1) 链表的实现方式 链表的实现方式有两种,分别为指针和数组,下面对这两部分的具体实现步骤做一个说明. - 指针实现 ①先要建立一个结点结构体 ②然后建立一个 ...

  7. PHP关联数组和哈希表(hash table) 未指定

    PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...

  8. 哈希表数据结构_算法与数据结构-哈希表

    前面我们已经讲到了数组和链表,数组能通过下标 O(1) 访问,但是删除一个中间元素却要移动其他元素,时间 O(n). 循环双端链表倒是可以在知道一个节点的情况下迅速删除它,但是吧查找又成了 O(n). ...

  9. 哈希表数据结构_Java数据结构哈希表如何避免冲突

    前言 一.哈希表是what? 这是百度上给出的回答: 简而言之,为什么要有这种数据结构呢? 因为我们想不经过任何比较,一次从表中得到想要搜索的元素.所以就构造出来了哈希表,通过某种函数(哈希函数)使元 ...

  10. 哈希表-数据结构(C语言)

    哈希表 什么是哈希表 我们在网站上注册账号时,当填好用户名后,系统都会判断用户名是否已被使用,如果已被使用,系统就会提示该用户名已被注册.那么系统是如何检测用户名是否被使用的呢?我们能想到的最简单的方 ...

最新文章

  1. Python之迭代器,生成器与装饰器
  2. 深入Android内存泄露
  3. 皮一皮:直男这下懂了吧...
  4. oracle的后台进程能否杀掉
  5. boost::kruskal_minimum_spanning_tree用法的测试程序
  6. 一步步编写操作系统 22 硬盘操作方法
  7. 刷题-字符串-Java
  8. Oracle 19c 新特性:自动化索引 Automatic indexing 实践
  9. 我的春Phone之行
  10. 不得不爱开源 Wijmo jQuery 插件集(10)-【Expander】(附页面展示和源码)
  11. 容器技术Docker K8s 9 容器服务ACK应用场景
  12. Word中输入10以上带圈数字
  13. 两个路由器的有线桥接与无线桥接
  14. python中plt.hist_关于python中plt.hist参数的使用详解
  15. 神舟微型计算机系统重装步骤,电脑重装系统步骤,最简单安全的操作!
  16. 用Python下载学习通课程首页的资料
  17. 文件管理(以Unix系统为例)
  18. 中点画线完整算法c语言,中点画线算法
  19. 四个特性,让这个信创文件安全传输软件备受客户青睐
  20. Python基础之列表(list)操作

热门文章

  1. 高项、高级项目管理师论文-整体管理
  2. 可以写进简历的软件测试项目实战经验(包含电商、银行、app等)
  3. 新唐N76E003AT20PIN对PIN完美替代STM8S003F3P6
  4. 利用pandas对MovieLens电影数据分析
  5. HDFS教程(06)- HDFS纠删码
  6. 数学建模计算机模拟实验答案,数学建模与数学实验课后习题答案.doc
  7. 如何将图片素材转为矢量图?
  8. Python3:获取地球实时卫星照片
  9. 使用奇妙清单:轻松搞定家庭计划事项同步管理
  10. js如何实现数组随机排序【附洗牌算法心得】