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

哈希表day5

242 有效的字母异位词

思路就是转为ASCII码,然后用一个数组记录26位字母出现的次数

#include <string>
class Solution{
public:bool isAnagram(string s,string t){int record[26]={0};for (int i=0;i<s.size();i++){record[s[i]-'a']++;}for (int i=0;i<t.size();i++){record[t[i]-'a']--;}for (int i=0;i<26;i++){if (record[i]!=0) return false;}return true;}
};

349 两个数组的交集

这部分学习到的知识就多了
1、std::unordered_set,这是一个C++容器,底层是哈希表,查询复杂度为O(1),其次,他不允许有重复的值(也就是说,将vector nums的值放进去,会自动去重)
2、如何将vector的东西放进unordered_set中呢?

unordered_set<int> num_set(nums1.begin(),nums1.end());

同理,将unordered_set中的东西放进到vector中

vector<int> result(unordered_set.begin(),unordered_set.end())

3、如何对unordered_set中的元素进行查找呢?
使用nums_set.find(num) 如果找到了,那么就返回一个 指向该元素的迭代器,如果没找到,就返回nums_set.end()这个特殊的迭代器。

#include <vector>
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { //参数为nums1的引用,nums2的引用unordered_set<int> result_set;  //自动去重 + 查找速度快(平均 O(1))unordered_set<int> nums_set(nums1.begin(),nums1.end());//构建一个新的unordered_set,把nums1放进nums_set中,使用的是迭代器的语法,从nums1的begin到nums1的endfor (int num:nums2){ //遍历 nums2 中的每一个数字 num。if (nums_set.find(num)!=nums_set.end()){    //如果nums_set.find(num)返回一个指向该元素的迭代器;如果没找到,那么就返回的是 nums_set.end(),这是一个“尾后迭代器”,表示“找不到”。result_set.insert(num); 
// 如果 num 存在于 nums_set 中:
// 返回一个 指向该元素的迭代器。
// 如果 num 不存在于 nums_set 中:
// 返回一个特殊的迭代器 —— nums_set.end(),表示“查找失败”或“无此元素”。}}return vector<int>(result_set.begin(),result_set.end()) //result_set.begin() 到 result_set.end() 形成一个范围,传给 vector 构造函数;}
};

202 快乐数

set.insert(num);
也就是将num加入到集合中

class Solution {
public:int getSum(int n){int result=0;while(n){result += (n%10)*(n%10);n = n/10;}return result;}bool isHappy(int n) {unordered_set<int> set;while(1){//不断循环int sum = getSum(n);if (sum==1){return true;}if (set.find(sum)!= set.end()){return false;}else{set.insert(sum);//新函数,将sum加入到set中}n = sum;}}
};
http://www.xdnf.cn/news/650467.html

相关文章:

  • VB.NET与SQL连接问题解决方案
  • SpringMVC怎样设置JSP视图解析器才能让页面跳转更高效?
  • 《Drain日志解析算法》论文阅读笔记
  • 企微获取会话内容,RSA 解密函数
  • 从零开始学电机(一)认识电机
  • [Java恶补day7] 42. 接雨水
  • 聊天室H5实时群聊聊天室全开源系统(源码下载)
  • 篇章三 基础——不可变类
  • 工信部中文点选验证码识别
  • Engineering a direct k-way Hypergraph Partitioning Algorithm【2017 ALENEX】
  • 基于JWT+Redis的登录流程实现
  • 分布式ID
  • 解决虚拟机挂起后,docker容器无法访问的问题
  • Qt6无法识别OpenCV(Windows端开发)
  • 【RabbitMQ】基于Spring Boot + RabbitMQ 完成应用通信
  • 七、【前端路由篇】掌控全局:Vue Router 实现页面导航、动态路由与权限控制
  • 2025/5/26 学习日记 基本/扩展正则表达式 linux三剑客之grep
  • [ARM][架构] 02.AArch32 程序状态
  • 3DVR拍摄指南:从理论到实践
  • [特殊字符] next-intl 服务端 i18n getTranslations 教程
  • 三分钟了解 MCP 概念(Model Context Protocol,模型上下文协议)
  • CLAM完整流程。patches-feature-split-train-eval
  • 5.26 面经整理 360共有云 golang
  • Java大师成长计划之第31天:Docker与Java应用容器化
  • 基于matlab版本的三维直流电法反演算法
  • 论文阅读: 2023 NeurIPS Jailbroken: How does llm safety training fail?
  • 支持selenium的chrome driver更新到136.0.7103.113
  • C++寻位映射的究极密码:哈希扩展
  • ubuntu 22.04 配置静态IP、网关、DNS
  • 鸿蒙OSUniApp 实现的日期选择器与时间选择器组件#三方框架 #Uniapp