Leetcode刷题:哈希表

找一个数是否出现过或一个数是否在集合中的时候就要想到用哈希表法

242有效的字母异位词

    bool isAnagram(string s, string t) {int table[26];for(char i:s) {table[i-'a'] +=1;}for(char i:t) {table[i-'a'] -=1;}for(int i:table) {if(i!=0)return false;}return true;}

349两个数组的交集

用unorderedset来解决

利用其去重的特性,且底部实现为哈希表所以读写速率快

    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> num1(nums1.begin(),nums1.end());unordered_set<int> result;for(int i:nums2) {if(num1.find(i) != num1.end()) {result.insert(i);}}return vector<int>(result.begin(),result.end());}

1两数之和

又要找数又要找下标所以利用map,不需要有序所以利用unorderedmap,底部实现是用哈希表。

    vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> num_map;for(int i=0;i<nums.size();i++) {unordered_map<int,int>::iterator iter = num_map.find(target-nums[i]);if(iter!=num_map.end()) {return vector<int>{iter->second,i};}num_map.insert(make_pair(nums[i],i));}return {};}

454四数之和

创建unordered_map,先遍历第一第二个数组,key为和的值value为出现的次数。然后再遍历第三第四数组,查找value为他们和的负值的key,找到了就增加count。a+b+c+d = 0,a+b = -(c+d)

    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int,int> umap;for(int a:nums1) {for(int b:nums2) {umap[a+b]++;}}int count = 0;for(int c:nums3) {for(int d:nums4) {if(umap.find(0-(c+d))!=umap.end()) {count += umap[0-(c+d)];}}}return count;}

383赎金信

我的暴力解法

    //暴力解法bool canConstruct(string ransomNote, string magazine) {map<int,int> Note;int count = 0;for(char i:ransomNote) {Note[i]++;count++;}for(char i:magazine) {if(Note.find(i) != Note.end()) {if(Note.find(i)->second>0) {Note[i]--;count--;}}}if(count == 0) {return true;}return false;}

数组做哈希表

    //用数组做哈希表bool canConstruct(string ransomNote, string magazine) {//因为只有小写字母 所以用数组比较好int alpha[26]={0};if(ransomNote.size()>magazine.size()) {return false;}for(char i:magazine) {alpha[i-'a']++;}for (char i:ransomNote) {alpha[i-'a']--;if(alpha[i-'a']<0) {return false;}}return true;}

三数之和

哈希表法(做法复杂)

推荐使用双指针法

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> result;sort(nums.begin(),nums.end());for(int i=0;i<nums.size()-1;i++) {if(nums[i]>0) break;if(i>0 && nums[i]==nums[i-1])continue;unordered_set<int> set;int c;for(int j=i+1;j<nums.size();j++) {if(j>i+2 && nums[j-1]==nums[j-2] && nums[j]==nums[j-1]) {continue;}c = 0-(nums[i]+nums[j]);if(set.find(nums[j]) != set.end()) {result.push_back({nums[i],nums[j],c});set.erase(c);}else {set.insert(c);  //为什么存c不行?这个c是想要的值,不代表实际存在的值}}}return result;}
};

双指针法

//双指针法
class Solution1 {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> result;sort(nums.begin(),nums.end());for(int i=0;i<nums.size();i++) {if(nums[i]>0)return result;if(i>0 && nums[i]==nums[i-1])continue;int left = i+1;int right = nums.size()-1;while(left<right) {int sum = nums[i]+nums[left]+nums[right];if(sum >0){right--;}else if(sum<0){left++;}else {result.push_back(vector<int>{nums[i],nums[left],nums[right]});while(right>left && nums[left+1]==nums[left]){left++;}while(right>left && nums[right-1]==nums[right]){right--;}left++;right--;}}}return result;}
};

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

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

相关文章

docker-harbor私有仓库部署和管理

harbor&#xff1a;开源的企业级的docker仓库软件 仓库&#xff1a;私有仓库 公有仓库 &#xff08;公司内部一般都是私有仓库&#xff09; habor 是有图形化的&#xff0c;页面UI展示的一个工具&#xff0c;操作起来很直观。 harbor每个组件都是由容器构建的&#xff0c;所…

新手教学系列——利用 Loguru 对日志进行分类处理

在现代应用程序中,日志记录是确保系统健康运行的关键因素之一。尤其在复杂的系统中,我们可能需要将日志按不同的需求进行分类和处理。Loguru 作为一款功能强大的日志库,提供了灵活的日志记录方式。今天,我们将探讨如何使用 Loguru 的过滤功能来分类处理系统日志和关键节点日…

算法-矩阵置零(73)

leetcode题目链接 这道题因为要求在O&#xff08;1&#xff09;的空间复杂度下面完成&#xff0c;所以最好的情况就是利用矩阵本身有的元素进行代码编写&#xff0c;而不另外开辟空间。 所以思路如下&#xff1a; 1.遍历第一行第一列&#xff0c;观察是否需要置0&#xff0c…

自定义注解,实现字段加密解密

根据业务需求,要求多部分字段,进行加解密,想到实现方式,就是通过自定义的注解AOP来实现 首先新建一个注解,注意ElementType.FIELD类型,说明这个注解只能作用在字段上 Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) public interface NeedEncrypt { }在新建…

[CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - trainer篇

[CLIP-VIT-L Qwen] 多模态大模型源码阅读 - trainer篇 前情提要源码阅读导包逐行解读compute_loss方法&#xff08;重构&#xff09;整体含义逐行解读 save_model函数&#xff08;重构&#xff09;整体含义逐行解读 create_optimizer函数&#xff08;重构&#xff09;整体含义…

CI/CD

目录 1.什么是CI/CD? 2.Gitlab仓库部署 3.部署Jenkins 3.1 使用jenkins拉取代码 3.2 对代码进行编译、打包 4.部署tomcat服务器 1.什么是CI/CD? 通俗来说就是启动一个服务&#xff0c;能够监听代码变化&#xff0c;然后自动执行打包&#xff0c;发布等流程: CICD 是持…

Jmeter版本下载国内外镜像源

官网最新版本 https://archive.apache.org/dist/jmeter/binaries/历史版本 https://archive.apache.org/dist/jmeter/binaries/ 国内镜像源1.阿里云 https://mirrors.aliyun.com/apache/jmeter/binaries/2.腾讯云 https://mirrors.cloud.tencent.com/apache/jmeter/

dubbo:dubbo+nacos整合springcloud gateway实现网关(三)

文章目录 0. 引言1. 集成gateway网关1.1 实操步骤1.2 dubbo提供者注册到nacos出现两个实例的问题 2. 源码3. 总结 0. 引言 上次我们讲到使用zookeeper作为注册中心搭建dubbo微服务框架&#xff0c;但是我们还缺少一个服务总入口&#xff0c;也就是我们的网关服务。所以今天我们…

Linux设置内网时间同步

背景&#xff1a;公司有三台服务器检测到同步外网的时间&#xff0c;现需要将其修改为同步公司内网自己搭建的ntp服务器 1、登录服务器检查 同步外网无疑 2、修改配置文件&#xff0c;同步内网ntp服务器时间 配置文件源内容如下&#xff1a; 修改后如下&#xff1a; [rootl…

特斯拉电动卡车事故引发安全调查,汽车制造商电动车战略调整

特斯拉电动卡车事故引关注 周三&#xff0c;美国国家运输安全委员会宣布启动对特斯拉电动半挂卡车在加州高速上发生的事故及随后起火事件的全面调查。此次调查将联合加州公路巡警局共同进行&#xff0c;旨在查明事故原因&#xff0c;确保道路安全。事故发生在周一深夜&#xff…

excel实现图片转文字功能/excel 实现导出图片功能/excel导出图片不失真(解决excel导出图片模糊的问题)

excel实现图片转文字功能 excel实现图片转文字功能&#xff1a;方法1&#xff1a;使用QQ的在线文档进行图片转文字方法2&#xff1a;使用WPS的excel文档进行图片转文字pdf图片转表格 使用excel 导出图片的方法&#xff08;使用Excel内置的“复制为图片”功能&#xff09;1. 复制…

在 uboot 中实现 UDP 协议

一、明确背景 uboot中有许多通信协议&#xff0c;像TFTP、NFS等&#xff0c;这些协议底层都是基于UDP协议来实现的&#xff0c;由于有一个板子在 uboot 段进行固件下载更新的需求&#xff0c;本来想基于TCP协议来实现自定义通信协议&#xff08;TCP有自带的拥塞控制和重传机制&…

2024生成式AI商业落地白皮书_火山引擎

更多详细内容请下载资源 2024生成式AI商业落地白皮书-火山引擎

基于Python的mediapipe和opencv的人体骨骼、人体姿态关键点的实时跟踪项目

随着计算机视觉技术的发展&#xff0c;人体姿态估计在虚拟现实、运动分析、人机交互等领域得到了广泛应用。传统的姿态估计方法通常依赖于深度学习模型&#xff0c;需要大量的计算资源。而 Google 开发的 MediaPipe 框架则提供了高效且易于使用的解决方案&#xff0c;它可以在各…

Leetcode 237.19.83.82 删除链表重复结点 C++实现

Leetcode 237. 删除链表中的节点 问题&#xff1a;有一个单链表的head&#xff0c;我们想删除它其中的一个节点node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点head。链表的所有值都是唯一的&#xff0c;并且保证给定的节点 node不是链表中的最后一个节点。删除…

重磅!RISC-V+OpenHarmony平板电脑发布

仟江水商业电讯&#xff08;8月18日 北京 委托发布&#xff09;RISC-V作为历史上全球发展速度最快、创新最为活跃的开放指令架构&#xff0c;正在不断拓展高性能计算领域的边界。OpenHarmony是由开放原子开源基金会孵化并运营的开源项目&#xff0c;已成为发展速度最快的智能终…

【机器学习】逻辑回归原理(极大似然估计,逻辑函数Sigmod函数模型详解!!!)

目录 &#x1f354; 逻辑回归应用场景 &#x1f354; 极大似然估计 2.1 为什么要有极大似然估计&#xff1f; 2.2 极大似然估计步骤 2.3 极大似然估计的例子 &#x1f354; Sigmod函数模型 3.1 逻辑斯特函数的由来 3.2 Sigmod函数绘图 3.3 进一步探究-加入线性回归 3…

OW-VISCap——开放世界视频实例分割方法研究

概述 论文地址&#xff1a;https://arxiv.org/pdf/2404.03657 本文提出了一种名为 OW-VISCap&#xff08;开放世界视频实例分割和字幕&#xff09;的方法。其三大贡献是 开放世界对象查询&#xff1a;除了已知对象查询外&#xff0c;还引入了开放世界对象查询&#xff0c;以发…

专题---自底向上的计算机网络(计算机网络相关概述)

目录 计算机网络相关概述 物理层 数据链路层 网络层 运输层 应用层 网络安全 1.计算机网络相关概述&#xff08;具体细节http://t.csdnimg.cn/NITAW&#xff09; 什么是计算机网络&#xff1f; 计算机网络是将一个分散的&#xff0c;具有独立功能的计算机系统&#x…

jmeter中添加ip欺骗

1、首先在本机电脑中通过配置文件创建添加ip的配置文件&#xff0c;先创建一个txt格式的&#xff0c;直接修改文件名以及后缀为ips.bat 2、编辑该ips.bat文件&#xff0c;在文件中输入如下内容&#xff0c;用于快速给本机添加ip地址&#xff0c;&#xff08;2&#xff0c;1&…