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

代码随想录打卡第五天

题目链接/文章讲解/视频讲解: 代码随想录

哈希表,是一种键值对结构,<键,值>是其中的一个元素。在C++中,set 和 map 分别提供以下三种数据结构,其底层实现以及优劣如下表所示:

除了上面说的那几个,数组也是一种给哈希结构,索引和数值构成键值对。

 这道题目中的关键点在于,s中字符字母及出现的次数与t中字符字母及出现的次数是否相同。可以使用哈希表解题,统计s每个字母及其出现的次数,构成键值对,<字符字母,该字符字母出现的次数>。除了上面说的三种c++哈希结构,可以直接使用数组,字母a-z只有26个,可以构建一个大小为26的数组,所以0-25分别代表a-z,数值就是字母出现的次数。之后比较两个数组是否相同,或者遍历第二个字符串时对相应字母的数值减一操作,最后判断数组是否为空。

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

自己的解法是创建两个map分别对数组1和数组2进行元素去重,再比较去重后的两个数组是否有交集。代码随想录的解法更简洁,使用set只对一个去重,判断另外的数组是否出现过,出现过则保留在result_set中,没出现过则不保留,最后再转为vector。

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {std::map<int,int> nums1_map;//对数组1元素去重std::map<int,int> nums2_map;//对数组2元素去重vector<int> result;for(int i=0;i<nums1.size();i++)//对数组1元素去重{nums1_map.insert({nums1[i],0});}for(int i=0;i<nums2.size();i++){nums2_map.insert({nums2[i],0});//对数组2元素去重}for(auto key:nums1_map){if(nums2_map.find(key.first)!=nums2_map.end())//元素去重后的num1中的元素是否出现在2中{result.push_back(key.first);//出现在2中则是相交的元素}}return result;}
};
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重unordered_set<int> nums_set(nums1.begin(), nums1.end());for (int num : nums2) {// 发现nums2的元素 在nums_set里又出现过if (nums_set.find(num) != nums_set.end()) {result_set.insert(num);}}return vector<int>(result_set.begin(), result_set.end());}
};

http://www.dtcms.com/a/265785.html

相关文章:

  • TinyWebserver学习(8)-定时器
  • 深度解析:venv和conda如何解决依赖冲突难题
  • 使用netstat与grep命令结合批量查找特定内容
  • Class3图像分类数据集代码
  • 数学建模_时间序列
  • CTF Web PHP弱类型与进制绕过(过滤)
  • 【云计算】企业项目 策略授权
  • 网络层:ip协议 与数据链路层
  • C++反射之获取可调用对象的详细信息
  • 《Spring 中上下文传递的那些事儿》Part 2:Web 请求上下文 —— RequestContextHolder 与异步处理
  • 低代码实战训练营教学大纲 (10天)
  • Linux之Socket 编程 UDP
  • 自然光实时渲染~三维场景中的全局光照
  • osg加入实时光照SilverLining 天空和3D 云
  • 租车小程序电动车租赁小程序php方案
  • Flutter 3.29+使用isar构建失败
  • 创客匠人视角:知识变现与创始人 IP 打造的破局之道
  • centos7源码编译安装python3
  • SSM和SpringBoot框架的关系
  • 关于微前端框架micro,子应用设置--el-primary-color失效的问题
  • FPGA从零到一实现FOC(一)之PWM模块设计
  • 火语言 RPA:突破企业自动化瓶颈,释放数字生产力​
  • Linux基本命令篇 —— zip/unzip命令
  • Apache Commons Pool中的GenericObjectPool详解
  • 华为Freebuds 6i新音效,设置后音质敲好!
  • Nginx安全配置漏洞修复实战指南
  • 百度文心智能体平台x小米应用商店:联手打造行业首个智能体与应用市场跨端分发模式
  • React 强大的表单验证库formik之集成Yup、React Hook Form库
  • 使用 Dockerfile 构建基于 .NET9 的跨平台基础镜像
  • 安卓开机自启动方案