LeetCode hot100---哈希表专题(C++语言)

news/2024/12/21 21:23:22/

常用的哈希数据结构

(1)unordered_set

只关心value,不关心key,set中的数据会自动升序

(2)unordered_map

既关心value,又关心key,map中的数据会自动升序

1、两数之和

(1)题目描述以及输入输出

(1)题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
(2)输入输出描述:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]关键思路:
将数组元素依次添加进unordered_map,每次查找target-nums[i],存在就将下标返回结果

(2)代码块

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> result;unordered_map<int,int> record;for(int i = 0;i<nums.size();i++){if(record.find(target-nums[i]) != record.end())	{result.push_back(i);result.push_back(record.find(target-nums[i])->second);}record[nums[i]] = i;}    return result;}
};

2、字母异位词分组

(1)题目描述以及输入输出

(1)题目描述:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
(2)输入输出描述:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]关键思路:
创建unordered_map数据结构,排序后的strs[i]作为key,排序前的strs[i]作为value
auto it 遍历map,依次将map->second插入结果数组

(2)代码块

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> record;string key;for(int i = 0;i<strs.size();i++)		// 将strs[i]添加进哈希表{key = strs[i];sort(key.begin(),key.end());record[key].push_back(strs[i]);}vector<vector<string>> result;for(auto it = record.begin();it != record.end();it++){result.push_back(it->second);		// 将map->second添加进结果数组}return result;}
};

3、最长连续序列

(1)题目描述以及输入输出

(1)题目描述:
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度
(2)输入输出描述:
输入:nums = [100,4,200,1,3,2]
输出:4关键思路:
将nums映射进set,自动完成排序
使用.count()找到连续序列第一个值,从当前向后遍历记录连续序列长度

(2)代码块

class Solution {
public:int longestConsecutive(vector<int>& nums) {int result = 0;unordered_set<int> record(nums.begin(),nums.end());	// 数组映射进set完成排序for(int num:record){if(!record.count(num-1))						// 查找连续序列第一个值{int tmp = num;								// 记录第一个值while(record.count(tmp)){tmp++;}											// 直到最后一个值		result = max(result,tmp-num);				// 记录序列长度}}return result;}
};

http://www.ppmy.cn/news/1537089.html

相关文章

Pandas库详细学习要点

Pandas库是一个基于Python的数据分析库&#xff0c;它提供了丰富的数据结构和数据分析工具&#xff0c;非常适合数据科学和数据分析领域的工作。以下是Pandas库详细学习的一些要点&#xff1a; 1. 数据结构 - Series&#xff1a;一维带标签数组&#xff0c;类似于NumPy中的一…

使用Conda管理python环境的指南

1. 准备 .yml 文件 确保你有一个定义了 Conda 环境的 .yml 文件。这个文件通常包括环境的依赖和配置设置。文件内容可能如下所示&#xff1a; name: myenv channels:- defaults dependencies:- python3.8- numpy- pandas- scipy- pip- pip:- torch- torchvision- torchaudio2…

ansible用户管理模块和剧本

ansible用户管理模块和剧本 group创建组模块 user创建⽤户模块 user模块 user模块name⽤户名uid指定uidgroup指定⽤户组shell指定命令解释器create_home是否创建家⽬录(yes/no)statepresent 添加absent删除 案例1&#xff1a;创建用户zhangsan ansible web -m user -a na…

YOLO11改进|注意力机制篇|引入大核可分离卷积注意力块LSKA

目录 一、【LSKA】注意力机制1.1【LSKA】注意力介绍1.2【LSKA】核心代码 二、添加【LSKA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【LSKA】注意力机制 1.1【LSKA】注意力介绍 下图是【LSKA】的结构图&#xff0c;让我…

探索Spring Boot:实现“衣依”服装电商平台

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数

VS Code Debug技巧&#xff1a;launch.json实用参数 在使用Visual Studio Code (VS Code)进行调试时&#xff0c;launch.json文件是一个强大的工具&#xff0c;它允许你自定义调试会话。以下是一些实用的参数&#xff0c;可以帮助你更有效地调试Python代码。 1. 调试第三方库…

淘宝商品评论API返回值中的品牌忠诚度评价

淘宝商品评论API返回值中通常并不直接包含品牌忠诚度评价这一具体指标。品牌忠诚度评价往往是一个更为复杂和综合的概念&#xff0c;它可能涉及消费者对品牌的整体满意度、重复购买率、推荐意愿等多个方面&#xff0c;而这些信息通常需要通过分析大量的用户评论、购买行为数据以…

Windows 搭建 Gitea

一、准备工作 1. 安装 Git&#xff1a;Gitea 依赖 Git 进行代码管理&#xff0c;所以首先需要确保系统中安装了 Git。 下载地址&#xff1a;https://git-scm.com/downloads/win 2. 安装数据库&#xff08;可选&#xff09; 默认情况下&#xff0c;Gitea 使用 SQLite 作为内…