代码随想录算法训练营第六天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

刷题建议

刷题建议与debug

  1. 代码随想录目前基本都有了视频讲解,一定要先看视频,事半功倍。
  2. 写博客,将自己的感悟沉淀下来,不然会忘
  3. 大家提问的时候,记得要把问题描述清楚,自己在哪一步遇到了问题,做了哪些调试,而不要只是把代码甩出来,这样方便大家帮忙快速定位问题。

博客内容:(博客记录以及打卡格式)

今日学习文章链接和视频链接

Python菜鸟教程

哈希表理论基础

大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。

  1. hash表(散列表)一般哈希表都是用来快速判断一个元素是否出现集合里
  2. hash函数:通过hashCode把名字转化为数值
  3. hash碰撞:小李和小王都映射到了索引下标 1 的位置,这一现象叫做哈希碰撞,解决方法有线性探测法和拉链法
  4. hash结构:比如字典,集合等()了解原理
  5. 用法:空间换时间,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。
    在这里插入图片描述

242.有效的字母异位词

自己看到题目的第一想法

  1. 暴力破解

看完代码随想录之后的想法

  1. 数组是简单的hash表,这题a-z只有26个字母,可以设置个数组a[0_25]分别的value分别表示a-z出现的次数
  2. 最后遍历数组,如果有a[i]的value不为0,则表示不是字母异位词

自己实现过程中遇到哪些困难

  1. record = [0]*26,忘了列表怎么初始
  2. record[ord(i) - ord(“a”)] += 1 的作用是将字符 i 出现的次数加一,通过将字符映射到 record 列表中的相应位置来实现。这种技巧通常在处理字符串中的字符统计问题时很有用。

相关题目

349. 两个数组的交集

自己看到题目的第一想法

  1. 用数组来hash,遍历nums1,if a[nums1[i]] == 0:a[nums1[i]] += 1
  2. 遍历nums2,if a[nums2[i]] != 0 b[count ++] = [nums2[i]

看完代码随想录之后的想法

  1. 整体思路没错,但是代码处理出现问题
  2. hash结构选择set或者数组,像这种只要一个的用set比较好
  3. 使用数组来做哈希的题目,是因为题目都限制了数值的大小。
  4. 通过这道题,熟悉数组 + 集合

202. 快乐数

自己看到题目的第一想法

  1. 没思路,不知道求和过程咋写

看完代码随想录之后的想法

  1. 明确怎么求和,单独写个函数
  2. 如果sum重复出现,就代表陷入死循环
  3. 怎么判断sum是否重复出现过?==》用set
  4. 题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很重要,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。

自己实现过程中遇到哪些困难

今日收获,记录一下自己的学习时长

1. 两数之和

自己看到题目的第一想法

  1. 判断对应的target是否在数组里==》hash法
  2. 不清楚用哪个数据结构

看完代码随想录之后的想法

  1. 本题,我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,需要使用 key value结构来存放,key来存元素,value来存下标,那么使用map正合适。
  2. 接下来需要明确两点:map用来做什么?map中key和value分别表示什么?
  3. 这道题 我们需要 给出一个元素,判断这个元素是否出现过,如果出现过,返回这个元素的下标。
  4. 那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。
  5. 遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。

自己实现过程中遇到哪些困难

  1. 对于数组,set,map这三种数据结构不熟悉,不清楚该用哪个
  2. 具体的思路没有分析出来

今日收获,记录一下自己的学习时长

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/314978.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式linux 编译qt5(以v851s为例)

本文参考Blev大神的博客:Yuzuki Lizard V851S开发板 --移植 QT5.12.9教程(群友Blev提供) - Allwinner / 柚木PI-V851S - 嵌入式开发问答社区 (100ask.net) 一. 环境准备 1.下载qt5源码:Open Source Development | Open Source …

访问学者申请需要注意什么?

访问学者申请是一项复杂而重要的过程,需要申请人在准备材料和过程中注意一些关键事项,以确保顺利完成申请并提高成功率。以下是知识人网小编的一些建议,希望对你的访问学者申请有所帮助。 1. 详细了解目标学术机构: 在申请访问学…

vscode中文插件以及运行php代码

vscode中文版插件 vscode运行php代码 1.插件安装 2.配置项 左上角文件——首选项——设置——输入php.validate.executablePath {"workbench.colorTheme": "Default Dark Modern","php.validate.executablePath": "E:/phpstudy/php.exe&q…

一篇文章带你了解Python常用自动化测试框架——Pytest!

在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框架Pytest,它在保留了UnitTest框架语法的基础上有着更多的优化处理 下面我们将从以下角度来介绍Pytest: Pytest基本介…

[ctf.show 元旦水友赛 2024] crypto

感觉半个多月回家没有打开过电脑了。看到ctf.show上元旦的比赛,才想起似乎应该看看。 月月的爱情故事 上来这就是个小脑洞题,给了一大段文字和一个base64的串。并且提示:试试摩斯吧! 从文字上看只有三种标点符号,显…

【书生·浦语大模型实战营04】《(4)XTuner 大模型单卡低成本微调实战》学习笔记

《(4)XTuner 大模型单卡低成本微调实战》 课程文档:《XTuner 大模型单卡低成本微调实战》 1 Finetune简介 LLM的下游应用中,增量预训练和指令跟随是经常会用到两种的微调模式 1.1 增量预训练微调 使用场景:让基座模型学习到一些新知识&a…

蓝桥杯单片机组备赛——蜂鸣器和继电器的基本控制

文章目录 一、蜂鸣器和继电器电路介绍二、题目与答案2.1 题目2.2 答案2.3 重点函数解析 一、蜂鸣器和继电器电路介绍 可以发现两个电路一端都接着VCC,所以我们只要给另一端接上低电平就可以让蜂鸣器和继电器进行工作。与操作LED类似,只不过换了一个74HC5…

JWT---JSON Web Token

JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 JSON Web Token的结构是什么样的 JSON…

DynastyPersist:一款功能强大的Linux持久化安全审计与测试工具

关于DynastyPersist DynastyPersist是一款专为红队研究人员和CTF玩家设计的Linux安全测试工具,该工具可以适用于各种安全评估任务和安全测试场景。 DynastyPersist本质上是一个Linux持久化脚本,并提供了大量的安全测试功能,可以为我们展示在…

问界又“翻车”了? 新能源电池“怕冷”成短板

文 | AUTO芯球 作者 | 李欣 2023年12月17日,蔚来创始人李斌亲自下场!驾驶ET7从上海出发,经过超14小时的行驶后,达成一块电池行驶超过1000公里的成绩,这一直播引起外界的广泛关注。 这不禁让人与”懂车帝冬测“联想到…

布隆过滤器 Bloom Filter

文章目录 1、什么是布隆过滤器?1.1 工作原理1.2 布隆过滤器的优点1.3 缺点 2、布隆过滤器的使用场景3、布隆过滤器的原理3.1 布隆过滤器的数据结构3.2 初始化阶3.3 插入元素过程3.4 查询元素是否存在3.5 元素删除3.6 扩容 4、SpringBoot 整合 布隆过滤器4.1 技术选型…

书生·浦语大模型--第二节课笔记

书生浦语大模型--第二节课 大模型及InternLM基本介绍实战部分demo部署准备工作模型下载代码准备终端运行web demo 运行 Lagent 智能体工具调用 Demo准备工作Demo 运行 浦语灵笔图文理解创作 Demo环境准备下载模型下载代码运行 大模型及InternLM基本介绍 大模型 定义&#xff…

【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?

文章目录 🚀前言🚀插入排序(insertsort)✈️原理✈️代码实现(coding) 🚀总结🚀希尔排序(shellsort)✈️代码实现(coding)✈️为啥希尔…

Python web自动化测试框架搭建(功能接口)——通用模块

1、通用模块: config.conf: 公共配置文件,配置报告、日志、截图路径,以及邮件相关配置 [report] reportpath E:\workspace\WebAutomation\src\functiontest\Report\2017-07-18 screen_path E:\workspace\WebAutomation\src\functiontest\R…

Pygame程序的屏幕显示

不同对象的绘制与显示过程 在Pygame中,需要将所有需要在屏幕上显示的内容都绘制在一个display surface上。该Surface通常称为screen surface,它是pygame.display.set_mode()函数返回的Surface对象。 在绘制不同对象时,可以使用不同的绘制方…

Linux - No space left on device

问题描述 No space left on device 原因分析 说明在服务器设备上的存储空间已经满了,不能再上传或者新建文件夹或者文件等。 解决方案 确认查看服务器系统的磁盘使用情况是否是真的已经没有剩余空间,复制下面命令在服务器上运行,然后发现如果…

用友U8 BI数据可视化报表怎么做?秘籍在这!

首先要找到一款顺利对接用友U8的BI数据可视化分析工具,简称BI工具、BI软件。这款BI工具需符合以下要求: 1、能对接用友U8系统。 2、有专门根据用友系统特性量身打造的标准化BI方案,也就是有标准化的用友U8 BI方案。 3、数据可视化图表丰富…

有没有游泳可以戴的耳机?2024年高性价比游泳耳机推荐

科技的不断进步为我们的生活带来了更多的便利和乐趣,游泳耳机作为一种专门设计用于水中活动的耳机也在不断演进。在畅游的时候,能够携带一款高性价比的游泳耳机,不仅可以让您更好地享受音乐,还能为游泳时的独特体验增色不少。 因…

HarmonyOS——ArkUI状态管理

一、状态管理 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&…

ES索引原理

ES在检索时底层使用的就是倒排索引,正向索引是通过key找value,反向索引则是通过value找key。 索引会分为两个区域:索引区和元数据区。数据是这样存储在里面的: 简单理解就是:当要录入一条数据时,首先会将完…