文章目录

  • 一、1512. 好数对的数目
    • 1.原题链接
    • 2.题目描述
    • 3.解题思路
    • 4.源码
  • 二、2006. 差的绝对值为 K 的数对数目
    • 1.原题链接
    • 2.题目描述
    • 3.解题思路
    • 4.源码
  • 三、1347. 制造字母异位词的最小步骤数
    • 1.原题链接
    • 2.题目描述
    • 3.解题思路
    • 4.源码
  • 四、面试题 10.02. 变位词组
    • 1.原题链接
    • 2.题目描述
    • 3.解题思路
    • 4.源码
  • 总结

一、1512. 好数对的数目

1.原题链接

1512. 好数对的数目

2.题目描述

给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。

3.解题思路

运用哈希表,遍历数组,找到满足条件的次数存入ans即可。

4.源码

class Solution {public:int numIdenticalPairs(vector<int>& nums) {int ans=0;int hash[101];memset(hash,0,sizeof(hash));for(int i=0;i<nums.size();++i){ans+=hash[nums[i]];++hash[nums[i]];}return ans;}
};

二、2006. 差的绝对值为 K 的数对数目

1.原题链接

2006. 差的绝对值为 K 的数对数目

2.题目描述

给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。|x| 的值定义为:如果 x >= 0 ,那么值为 x 。 如果 x < 0 ,那么值为 -x 。

3.解题思路

本题与上题类似,也是运用哈希表,注意要找两次。

4.源码

class Solution {public:int countKDifference(vector<int>& nums, int k) {unordered_map<int,int> hash;int ans =0;for(int i =0;i<nums.size();++i){ans+=hash[nums[i]+k];ans+=hash[nums[i]-k];hash[nums[i]]++;}return ans;}
};

三、1347. 制造字母异位词的最小步骤数

1.原题链接

1347. 制造字母异位词的最小步骤数

2.题目描述

给你两个长度相等的字符串 s 和 t。每一个步骤中,你可以选择将 t 中的 任一字符 替换为 另一个字符。返回使 t 成为 s 的字母异位词的最小步骤数。字母异位词 指字母相同,但排列不同(也可能相同)的字符串。

3.解题思路

构造两个哈希表,遍历两个字符串,将其存入哈希表中,之后枚举每个字母,并进行比较,如果两个差值为正数,则累加。

4.源码

class Solution {public:int minSteps(string s, string t) {int hashs[256];int hasht[256];int ans =0;memset(hashs,0,sizeof(hashs));memset(hasht,0,sizeof(hasht));for(int i =0;i<s.size();++i){++hashs[s[i]];++hasht[t[i]];}for(int i ='a';i<='z';++i){if(hasht[i]-hashs[i]>0){ans+=hasht[i]-hashs[i];}}return ans;}
};

四、面试题 10.02. 变位词组

1.原题链接

面试题 10.02. 变位词组

2.题目描述

编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。

3.解题思路

遍历strs的每个字符,按照字典序排序,之后插入到哈希表中,之后遍历哈希表,将原数组变为二维数组。

4.源码

class Solution {public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> hash;for(int i=0;i<strs.size();++i){string s =strs[i];sort(s.begin(),s.end());hash[s].push_back(strs[i]);}vector<vector<string>> ans;for(auto i :hash){ans.push_back(i.second);}return ans;}
};

ps:本题与49. 字母异位词分组 相同,做一题过两题。

总结

第七天辣,还需加油。

五月集训(第七日)哈希表相关推荐

  1. [英雄星球六月集训LeetCode解题日报] 第七日 哈希表

    [英雄星球六月集训LeetCode解题日报] 第七日 哈希表 一. 442. 数组中重复的数据 1. 题目描述 2. 思路分析 3. 代码实现 二. 2068. 检查两个字符串是否几乎相等 1. 题目 ...

  2. 英雄算法联盟---五月集训总结

    目录 1. 知识星球英雄算法联盟 2.训练历程与感悟 3.加入星球的变化 4.未来目标 5.结尾 tips:想加入星球的小伙伴可以扫描下方的二维码,加入星球后可以找我返现! 1. 知识星球英雄算法联盟 ...

  3. 五月集训-14【栈】

    文章目录 前言 一.练习题目 二.思路及题解 1. LC1441-用栈操作构建数组 2. LC1021-删除最外层的括号 3. LC1700-无法吃午餐的学生数量 4. LC1381-设计一个支持增量 ...

  4. 【C#】集合_哈希表_字典_泛型_文件

    数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...

  5. PHP哈希表碰撞攻击原理

    哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现. 哈希表碰撞攻击的基本原理 ...

  6. 在C#中应用哈希表(Hashtable)

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  7. 自己写的哈希表以及解决哈希冲突

    哈希表就是键值key-value对,使用hash函数让key产生哈希值,当不同的key产生相同的哈希值时就是哈希冲突了,产生哈希冲突可以使用拉链法. hash.c #include <stdio ...

  8. PHP内核中的哈希表结构

    https://github.com/HonestQiao/tipi/commit/17ca680289e490763a6a402f79afa2a13802bb36 下载:https://github ...

  9. 用开放地址法中的线性探查法解决冲突实现哈希表的运算

    为了更深的理解哈希算法,自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算. /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表 ...

最新文章

  1. TCP/IP / 状态转换图
  2. 最优化作业02—一维最优化方法
  3. C# 图片、文件等加入Project Resources
  4. python import 路径设置
  5. delphi中move函数的用法 转
  6. spring单元测试无法注入bean_Spring容器启动@Value属性无法注入?
  7. 如何定位http的url路径资源
  8. zabbix 添加 host item
  9. 智能ai电话机器人源码加密开源版开发供应商
  10. Chapter 2 大规模MIMO系统信息论基础及信道容量分析
  11. dos2unix命令详解
  12. 虚拟机是ubuntu,windows映射盘符方式访问虚拟机
  13. 浏览器中performance的基本使用
  14. 在php中phr是什么意思,虽败犹荣 AGO.phr:WESG让我们如获新生
  15. 学习编程比学开车要简单
  16. 怎么恢复苹果手机通讯录
  17. js中字符串数字转换为数值类型
  18. 解决uni-uploadFile上传图片丢失后缀名的问题
  19. c++11 unkown总结
  20. Java MVC 架构初学者指南

热门文章

  1. 查看已连接的无线网密码(windows)
  2. 【HashMap】HashMap的6种遍历方法
  3. 【python实操】年轻人,别用记事本保存数据了,试试数据库吧
  4. 【无标题】删除线代码
  5. 隧道凿岩机器人_计算机控制凿岩台车(隧道凿岩机器人)简介
  6. “ 汽车零配件MES系统“对企业的帮助
  7. 王者荣耀服务器维护了怎么进不去,王者荣耀更新了进不去怎么回事 王者荣耀今早更新了进不去解决办法...
  8. 【pytest】(二) pytest中的fixture (1) : fixture和fixture API —@pytest.fixture()的简单说明
  9. html5多行布局,css常用布局多行多列
  10. 博客园添加Live2d看板娘