码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【LeetCode】升级打怪之路 Day 06:哈希表的应用


    今日题目:

    • 349. 两个数组的交集 | LeetCode
    • 202. 快乐数 | LeetCode
    • 1. 两数之和 | LeetCode
    • 205. 同构字符串 | LeetCode
    • 599. 两个列表的最小索引总和 | LeetCode
    • 49. 字母异位词分组
    • 249. 移位字符串分组
    • 36. 有效的数独

    目录

      • 应用 1 -- 哈希集合
        • LeetCode 349. 两个数组的交集 【easy】
        • LeetCode 202. 快乐数 【小技巧】
      • 应用 2 -- 哈希映射 之 构造哈希表
        • LeetCode 1. 两数之和 【classic】
        • LeetCode 205. 同构字符串 【easy】
        • LeetCode 599. 两个列表的最小索引总和 【easy】
      • 应用 3 -- 哈希映射 之 设计键
        • LeetCode 49. 字母异位词分组 ⭐⭐⭐⭐⭐
        • LeetCode 249. 移位字符串分组 【还行】
        • LeetCode 36. 有效的数独 【还行】

    今天的题目也不难,主要学习了使用 HashSet 和 HashMap 来解决一些需要查重或记录 kv 映射关系的问题。其中应用 3 “设计 HasMap 的 key” 的思路很新颖有趣,要学会这种思想。

    应用 1 – 哈希集合

    哈希集合主要用来查重。

    LeetCode 349. 两个数组的交集 【easy】

    349. 两个数组的交集 | LeetCode

    经典的使用 HashSet 来解决问题的题目,较简单。

    LeetCode 202. 快乐数 【小技巧】

    202. 快乐数 | LeetCode

    这个题需要从题干的“无限循环”中推导出可能会有重复循环,进而想到使用 HashSet 来避免一直死循环的问题。

    我一开始就没想到这点,导致有点不知道怎么下手。

    应用 2 – 哈希映射 之 构造哈希表

    什么情况下会想到使用哈希表呢?当我们需要同时得到关联信息时,可以使用哈希表建立 key 与 value 的映射关系。我们需要通过分析题目的相关因素之间的关系,为 key 和 value 选择合适的数据类型。

    常见的 key 与 value 的关系有:

    • key -> 下标:比如两数之和题目,需要通过一个数字找出它在数组中的下标。
    • key -> 频次:用于统计使用频率最高的元素
    • key -> 数组:如果一个键对应的信息是一组元素,可使用数组或链表存储。
    • key -> 平面坐标:某些矩阵类习题可能会存储坐标;
    • key -> 其他:一般出现在模拟题中,根据实际需要设计哈希表。

    LeetCode 1. 两数之和 【classic】

    1. 两数之和 | LeetCode

    经典问题了,使用 key -> 下标 形式的哈希映射可以轻松解决。

    LeetCode 205. 同构字符串 【easy】

    205. 同构字符串 | LeetCode

    需要同时使用 HashMap 和 HashSet 用于记录映射关系和查重,题目较容易。

    LeetCode 599. 两个列表的最小索引总和 【easy】

    599. 两个列表的最小索引总和 | LeetCode

    这也是考察对利用 HashMap 来记录 key -> index 关系的一个题目,较为简单。

    应用 3 – 哈希映射 之 设计键

    前面在使用 HasMap 时,key 的设计相对简单,然而在某些题目中,需要我们设计出合适的 key,才能利用 HashMap 来解题。

    做下面这几个题目,关键是学会通过自己设计 HashMap 的 key 的形式来解决一些具体问题。

    LeetCode 49. 字母异位词分组 ⭐⭐⭐⭐⭐

    49. 字母异位词分组 | LeetCode

    这个题是经典的需要你去设计 key 的题目。

    字母异位词指字母相同,但排列不同的字符串,比如 “ate” 与 “eat” 是一组字母异位词。如果单纯地把每个字符串作为键,显然没有起到任何作用。经过分析发现,同一组字母异位词中,如果按照字典序排列,得到的字符串相同,且长度相等。这时我们自然想到以 按照字典序排列后的字符串 作为键,这样就能合理区分出字母异位词了。

    LeetCode 249. 移位字符串分组 【还行】

    249. 移位字符串分组 | LeetCode

    也是需要自己设计 key,这里主要一个坑:“可以认为字母表首尾相接,所以 ‘z’ 的后续为 ‘a’”

    LeetCode 36. 有效的数独 【还行】

    36. 有效的数独 | LeetCode

    题目很有意思,难度还行,能想到解决思路的话就不难。

  • 相关阅读:
    Huggingface初上手即ERNIE-gram句子相似性实战
    基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
    操作系统实现-loader
    python+flask计算机毕业设计web的智慧云医疗的设计与实现(程序+开题+论文)
    亲测快捷高效的编写测试用例方法
    AI对抗中的AI:技术展望与应用研究
    Webpack面试题
    mysql secure_file_priv 属性相关的文件读写权限问题
    算法训练Day27 | LeetCode39. 组合总和 (元素可重复,数组长度不限);40. 组合总和III(去重);131.分割回文串
    android 获取SD卡路径
  • 原文地址:https://blog.csdn.net/qq_45668004/article/details/136303539
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号