刷leetcodehot100返航版--哈希表5/5、5/6

回顾一下之前做的哈希,貌似只有用到

  • unordered_set:存储无序元素
  • unordered_map:存储无序键值对

代码随想录

常用代码模板2——数据结构 - AcWing

C++知识回顾-CSDN博客

1.两数之和5/5【30min】

1. 两数之和 - 力扣(LeetCode)

1.set和map分不清,set是只有值,map是键值对。

2、map的键值弄反了,找数的话,键是数,值是索引i

3.考虑如果有重复的数怎么办:不要提前把数组转成map,一边遍历一边转。

class Solution {//考虑输入
public:vector<int> twoSum(vector<int>& nums, int target) {//快速判断一个元素是否出现集合里//如果是哈希,怎么存数据//没考虑一样的元素// unordered_set<int> mySet;// for(int i= 0;i<nums.size();i++){//     mySet.insert(target - nums[i]);// }// for(int i= 0;i<nums.size();i++){//     auto iter = mySet.find(nums[i]);//     if(iter!=mySet.end()){//         continue;//     }//     return {i,*iter};// }unordered_map<int,int>findmap;//快速找下标//有重复的怎么办for(int i = 0;i<nums.size();i++){auto it = findmap.find(target-nums[i]);if(it != findmap.end()){return {i,it->second};}findmap[nums[i]] = i;//索引和值反了}return {};}
};

字母异位词分组【30min】

49. 字母异位词分组 - 力扣(LeetCode)

map和set的区别,map是键值对,set是只有值,vector和set的区别是???

unordered_set/map比set/map用的多的原因是O(1)????

const string&使用引用避免拷贝【如果是不操作这个对象,可以省点空间,否则就创建了新对象】

语法问题:

// ❌ 错误代码
for (auto it : mp) {         // it是键值对的拷贝,不是迭代器!
    result.push_back(it->second); // 错误:it不是指针/迭代器
}

// ✅ 修正代码
for (const auto& entry : mp) { // entry是键值对的引用
    result.push_back(entry.second); // 正确:用 . 访问成员
}

 anto it = mp.find("a")这里it是指针

for(auto it : mp)这里it是一个对象,访问pair的键or值需要用点(.)it.second

 问题:1.string的sort函数怎么用:有一个strs:sort(strs.begin(),strs.end())

2.键和值怎么考虑,这里其实不需要find

3.一对多的处理1个sort后的string对应多个string怎么办:string对应vector<string>【妙】

4.string的初始化,有一个string a,则string b = a;

5.迭代器是指针还是对象,见上

6.想了一下一对多怎么处理,原来想用multiset,find(key) 返回指向 第一个匹配键 的元素的迭代器,可以用equal_range,放后,以后看。

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//tae和tea如何等价//如何处理输入输出//按次序排列?//先字符串排序,转成一样的用map存。然后find,键:原,值:改后的字符串vector<vector<string>>result;// unorder_map<string,string> word;//有重复怎么办,如果multi_map有重复find返回什么//z这个不用find了,直接遍历:键:改后的字符串;值:原unordered_map<string,vector<string>>mp;for(const auto &it:strs){//这里it是数组// string newOne = sort(it.begin(),it.end());string newOne = it;sort(newOne.begin(),newOne.end());mp[newOne].push_back(it);//*it?}for(const auto &it:mp){result.push_back(it.second);}return result;}};

#include <iostream>
#include <map>

int main() {
    std::multimap<int, std::string> mmap = {
        {1, "A"}, {1, "B"}, {2, "C"}, {1, "D"}
    };

    // 方法1:使用 find
    auto it = mmap.find(1);
    if (it != mmap.end()) {
        std::cout << "First match: " << it->second << std::endl; // A
    }

    // 方法2:使用 equal_range
    auto range = mmap.equal_range(1);
    std::cout << "All values for key 1:\n";
    for (auto it = range.first; it != range.second; ++it) {
        std::cout << "  " << it->second << std::endl; // A, B, D
    }

    // 方法3:使用 lower_bound 和 upper_bound
    std::cout << "All values for key 1 (via bounds):\n";
    auto lower = mmap.lower_bound(1);
    auto upper = mmap.upper_bound(1);
    for (auto it = lower; it != upper; ++it) {
        std::cout << "  " << it->second << std::endl; // A, B, D
    }

    return 0;
}

3.最长连续序列[7min]

128. 最长连续序列 - 力扣(LeetCode)

class Solution {
public:int longestConsecutive(vector<int>& nums) {//字连续的最长序列(不要求序列元素在原数组中连续)的长度。//sort(O(logn))if(nums.size()==0){return 0;}//[]:0sort(nums.begin(),nums.end());int max = 1;//[0]:0int count = 1;for(int i = 0;i<nums.size();i++){if(i == nums.size()-1){break;}if(nums[i] == (nums[i+1]-1)){count++;}else if(nums[i] == nums[i+1]){continue;}else{count = 1;}if(count>=max){max = count;}}return max;//[1,0,1,2]}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openwrt 使用quilt 打补丁(patch)

1,引入 本文简单解释如何在OpenWRT下通过quilt命令打补丁--patch&#xff0c;也可查看openwrt官网提供的文档 2&#xff0c;以下代码通过编译net-snmp介绍 ① 执行编译命令之后&#xff0c;进入build_dir的net-snmp-5.9.1目录下&#xff0c;改目录即为snmp最终编译的目录了 /…

【开发工具】Window安装WSL及配置Vscode获得Linux开发环境

笔者面试时需要本地IDE手撕代码并测试&#xff0c;但是windows开发环境用不习惯&#xff0c;Min64和json配置也比较麻烦&#xff0c;因此采用WSLvscode的方式快速配置Linux开发环境 WSL安装 直接在微软商店搜索WSL即可 系统设置 开始菜单搜索启用或关闭 Windows 功能&…

【C语言】初阶数据结构相关习题(一)

&#x1f386;个人主页&#xff1a;夜晚中的人海 今日语录&#xff1a;人的生命似洪水在奔流&#xff0c;不遇着岛屿、暗礁&#xff0c;难以激起美丽的浪花。——奥斯特洛夫斯基 文章目录 ⭐一、判定是否互为字符重排&#x1f389;二、 回文排列&#x1f680;三、字符串压缩&am…

MySQL----数据库的操作

1. 查看数据库 语法&#xff1a;show databases; 示例展示&#xff1a; 2. 创建库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name[CHARACTER SET charset_name][COLLATE collation_name]; 注意&#xff1a;[] 为可选项 {} 为必选项 database_name 为数据…

Dagger中编译import报找不到ProvideClientFactory,initialize中ProvideClientFactory爆红

解决方案&#xff1a;将对应Module移到主模块&#xff0c;可能是依赖循环使用导致或者是模块之间无法访问及通信导致 为了重现问题&#xff0c;我还远了此操作

Nacos源码—4.Nacos集群高可用分析四

大纲 6.CAP原则与Raft协议 7.Nacos实现的Raft协议是如何写入数据的 8.Nacos实现的Raft协议是如何选举Leader节点的 9.Nacos实现的Raft协议是如何同步数据的 10.Nacos如何实现Raft协议的简版总结 8.Nacos实现的Raft协议是如何选举Leader节点的 (1)初始化RaftCore实例时会开…

拟南芥T2T基因组-文献精读127

A near-complete assembly of an Arabidopsis thaliana genome 拟南芥基因组的近乎完整组装 拟南芥&#xff08;Arabidopsis thaliana&#xff09;基因组序列作为广泛应用的模式物种&#xff0c;为植物分子生物学研究提供了巨大的推动力。在基因组序列首次发布后的20多年&…

一个关于fsaverage bem文件的说明

MNE文档&#xff1a;基于模板 MRI 的 EEG 前向算子 Head model and forward computation 在了解了脑图谱发展的过程之后&#xff0c;对脑的模版有了更深的认识&#xff0c;所以&#xff0c;对于之前使用的正向的溯源文件&#xff0c;进行一下解析&#xff0c;查看包含的信息&a…

C#学习第21天:安全与加密(Security and Cryptography)

核心概念 1. 什么是加密&#xff1f; 加密&#xff1a;加密是一种将数据转换为一种不可读形式的方法&#xff0c;只有持有相应密钥的人才能解密并读取数据。目的&#xff1a;确保数据的机密性和安全性&#xff0c;特别是在传输过程中过防止未授权访问。 2. 加密类型 对称加密…

OpenCV 图形API(77)图像与通道拼接函数-----对图像进行几何变换函数remap()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对图像应用一个通用的几何变换。 函数 remap 使用指定的映射对源图像进行变换&#xff1a; dst ( x , y ) src ( m a p x ( x , y ) , m a p y…

在线时间戳转换工具

给大家推荐一个在线时间戳转换工具 点击跳转-鸽鸽在线工具 这个工具除了时间戳转换&#xff0c;到首页还能选择使用很多其他小工具&#xff0c;欢迎使用

WPF之面板特性

文章目录 1. 概述2. WPF布局系统基础2.1 布局过程概述2.2 布局重新计算的触发条件2.3 布局重新计算的核心方法 3. WPF内置面板类型及特性3.1 面板类型概览3.2 Canvas面板3.3 StackPanel面板3.4 WrapPanel面板3.5 DockPanel面板3.6 Grid面板3.7 UniformGrid面板3.8 Virtualizing…

【技术追踪】通过潜在扩散和先验知识增强时空疾病进展模型(MICCAI-2024)

向扩散模型中引入先验知识&#xff0c;实现疾病进展预测&#xff0c;扩散模型开始细节作业了~ 论文&#xff1a;Enhancing Spatiotemporal Disease Progression Models via Latent Diffusion and Prior Knowledge 代码&#xff1a;https://github.com/LemuelPuglisi/BrLP 0、摘…

[ linux-系统 ] 常见指令2

1. man 指令 语法&#xff1a;man [选项] 命令 功能&#xff1a;查看联机手册获取帮助。 选项说明-k根据关键字搜索联机帮助。num只在第num章节找。-a显示所有章节的内容。 man是 Unix 和类 Unix 系统中的一个命令&#xff0c;用于查看操作系统和软件的手册页面&#xff08;ma…

STL之stackqueue

stack的介绍&#xff08;可以想象成栈&#xff09; 1.stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作 2.stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特点类封装作为其…

【现代深度学习技术】现代循环神经网络06:编码器-解码器架构

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

宏电全新升级单北斗5G电力DTU,为每一公里电力线路注入可靠连接

在配网自动化改造与数字化转型的双重驱动下&#xff0c;宏电股份推出全新升级版H7710-DLWZ系列5G电力DTU&#xff0c;聚焦配网通信链路冗余、国产自主可控、复杂环境适应性三大核心需求&#xff0c;为配电自动化、台区智能运维、分布式能源接入等场景提供高可靠通信底座。 国产…

学习海康VisionMaster之间距检测

一&#xff1a;进一步学习了 今天学习下VisionMaster中的间距检测工具&#xff1a;主要类似于卡尺工具&#xff0c;测量物体的长度或者宽度或者间距 二&#xff1a;开始学习 1&#xff1a;什么是间距检测&#xff1f; 间距测量模块用于检测两特征边缘之间的间距&#xff0c;首…

蓝桥杯 18. 积木

积木 原题目链接 题目描述 小明用积木搭了一个城堡。为了方便&#xff0c;小明使用的是大小相同的正方体积木&#xff0c;并将其搭建在一个 n 行 m 列的方格图上。每个积木占据方格图中的一个小格子。 小明的城堡是立体的&#xff0c;可以将积木垒在其他积木上。当某个格子…

C++负载均衡远程调用学习之基础TCP服务

目录 1.LARS课程模块介绍 2.LARS的功能演示机场景作用 3.LARS的reactor框架的组成部分 4.Lars_reactor的项目目录构建 5.Lars_tcp_server的基础服务开发 6.Lars_tcp_server的accept实现 7.LarsV0.1总结 1.LARS课程模块介绍 2.LARS的功能演示机场景作用 # Lars系统开发 …