当前位置: 首页 > news >正文

刷LeetCode hot100--1.哈希表

哈希表--查找一个元素在不在数组/map/set中

目前用到的数据结构:

std::unordered_set哈希表无序O(1)O(1)
std::unordered_map哈希表key无序key不可重复key不可修改O(1)O(1)

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

30min+

几个问题

1.原来想的是两个数都在哈希表里,如果两个数重了怎么办

--->因为总能找到解,而又不会矛盾,所以可能出现3,3,但不会出现3,3,3

--->那么重复怎么处理,你不要一开始就让所有元素插入unodered_map,遍历nums中数据,把nums[i]前面的插进map, 即3,3,这中情况,后一个3没有插入map,前一个3插进去了

2.map的一些操作注意事项

--->构造函数:

//默认构造
std::map<int, std::string> myMap; // 创建一个空的map,键类型为int,值类型为std::string

--->插入

mapStu.insert(std::pair<int, std::string>(3, "小张")); 

--->对某键值的修改

mapStu[3] = "小刘";

--->查找【aoto好用,自己分析是什么类型】

// 使用find查找键3  
auto it = mapStu.find(3);  
if (it != mapStu.end()) {  // 键存在,修改其对应的值  it->second = "小刘";  
} else {  // 键不存在,可以选择插入新的键值对  mapStu[3] = "小刘";  
}

it->second就是键为3的元素的值的引用 

--->map操作手册见:C++之STL整理(3)之map 用法(创建、赋值、方法)整理_c++ map初始化-CSDN博客

3.代码

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {//能想到暴力和哈希//但是哈希怎么做来着//元素重复怎么办unordered_map<int,int>map;for(int i = 0;i<nums.size();i++){auto iter = map.find(target-nums[i]);if(iter != map.end()){return{iter->second,i};}map.insert(pair<int,int>(nums[i],i));}  return {};}     
};


http://www.mrgr.cn/news/78644.html

相关文章:

  • HCIE:详解OSPF,从基础到高级特性再到深入研究
  • SQL进阶——子查询与视图
  • 为什么分布式系统不推荐使用(Join)多表关联查询?
  • transformers框架t5-small模型做文本翻译
  • 评委打分项目
  • zabbix 图形中文显示乱码问题
  • Linux系统 异常控制流
  • 【CSS in Depth 2 精译_064】10.3 CSS 中的容器查询相对单位 + 10.4 CSS 容器样式查询 + 10.5 本章小结
  • 【连接池】.NET开源 ORM 框架 SqlSugar 系列
  • C_字符串其实就是字符数组
  • pcb线宽与电流
  • win10系统安装docker-desktop
  • 6.STM32之通信接口《精讲》之IIC通信---硬件IIC(STM32自带的硬件收发器)
  • 扩散模型_Diffusion Model
  • ffmpeg安装(windows)
  • 链表?->?(以尾插法说明,附头插法)
  • 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言
  • STL——string类的模拟实现
  • 基于 Spring Boot 实现图片的服务器本地存储及前端回显
  • Matlab学习笔记
  • Ionic移动端开发
  • FFmpeg 推流给 FreeSWITCH
  • ESP32开发板在micropython里直接用requests向web服务器发送请求:ESP32S3开发板通过fastapi中转成功连接星河大模型
  • 判断一个数字是否为质数-多语言
  • string接口模拟实现2
  • 18. C++STL 4(vector的使用, 空间增长, 迭代器失效详解)