C++ 哈希表OJ

目录

1、1. 两数之和

 2、面试题 01.02. 判定是否互为字符重排

 3、217. 存在重复元素

4、 219. 存在重复元素 II

5、49. 字母异位词分组


频繁查找某一个数的时候可以使用哈希表,哈希表可以使用容器,也可以使用数组模拟,当元素是字符串中的字符或者数据范围很小的时候,可以使用数组模拟哈希表。

1、1. 两数之和

 

思路:哈希表,边判断边插入。(全部插入再判断,需要判断是排除自身,没有边判断边插入简洁) 

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hash;for (int i = 0; i < nums.size(); i++) {int x = target - nums[i];if (hash.count(x))return {hash[x], i};hash[nums[i]] = i;}return {-1, -1};}
};

 2、面试题 01.02. 判定是否互为字符重排

 思路:使用一个数组模拟哈希表统计其中一个字符串,然后判断另一个字符串的每个字母在哈希表中减一后,如果出现次数小于0,则不为重排,反之则为重排。

class Solution {
public:bool CheckPermutation(string s1, string s2) {if (s1.size() != s2.size())return false;int hash[26] = {0};for (auto s : s1)hash[s - 'a']++;for (auto s : s2) {hash[s - 'a']--;if (hash[s - 'a'] < 0)return false;}return true;}
};

 3、217. 存在重复元素

 思路:借助哈希表边统计边判断。

class Solution {
public:bool containsDuplicate(vector<int>& nums) {unordered_set<int> hash;for (auto n : nums) {if (hash.count(n))return true;elsehash.insert(n);}return false;}
};

4、 219. 存在重复元素 II

 思路:使用哈希表统计,key为元素,value为下标。

class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> hash;for (int i = 0; i < nums.size(); i++) {if (hash.count(nums[i])) {if (i - hash[nums[i]] <= k)return true;}hash[nums[i]] = i;}return false;}
};

5、49. 字母异位词分组

思路:使用string作为哈希表的key,vector<string>作为哈希表的value,将字符串排序后的结果同时作为key和value插入哈希表,由于哈希表的value是字符串数组,所以将哈希表的value导入一个数组即为结果。

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, vector<string>> hash;for (auto& s : strs) {string tmp = s;sort(tmp.begin(), tmp.end());hash[tmp].push_back(s);}vector<vector<string>> ret;for (auto& x : hash) {ret.push_back(x.second);}return ret;}
};

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

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

相关文章

算法打卡day9|栈与队列篇01|Leetcode 232.用栈实现队列、225. 用队列实现栈

栈与队列理论基础 栈&#xff08;Stack&#xff09; 栈是一种后进先出&#xff08;LIFO&#xff09;的数据结构,即最近添加到栈中的元素将是第一个被移除的元素。 栈通常有两个主要的操作&#xff1a;push 用于添加一个元素到栈顶&#xff0c;而 pop 用于移除栈顶的元素。此外…

二维码样式修改如何在线处理?在电脑上改二维码图案的方法

随着网络的不断发展&#xff0c;二维码的应用场景不断增多&#xff0c;很多人都会将内容放到二维码中&#xff0c;通过扫码的方式将储存在云端的数据调取显示。而面对不同的用途时&#xff0c;对二维码的样式也会有单独的要求&#xff0c;比如需要改变颜色、加入文字、logo、尺…

网络调试助手使用MQTT协议与Mosquitto通信(3)

一、连接报文 一开始设备需要连接到mqtt服务器&#xff0c;连接时的数据包内需要携带对应的设备ID&#xff0c;以及用户名和密码。这使用默认的用户名和密码。设备ID每一个设备都需要设置为不同的&#xff0c;两个相同的ID只能允许一台设备在线&#xff0c;另一个相同的ID的设备…

【C++庖丁解牛】模版初阶

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1. 泛型编程2. 函数模…

凌鲨微应用API大全

linksaas-minapp/api 获取微应用信息 export interface MinAppInfo {userId: string; //用户ID(未登录为空字符串)userDisplayName: string;crossHttp: boolean;//打开redis代理时会设置redisProxyToken?: string;redisProxyAddr?: string;//打开mongo代理时会设置mongoPro…

Dgraph 入门教程二《 快速开始》

1、Clound 云 云地址&#xff1a;Dgraph Cloud 登录Clound 云后&#xff0c;可以用云上的东西操作&#xff0c;可以用谷歌账号或者github账号登录。 启动云 &#xff08;1&#xff09;在云控制台&#xff0c;点击 Launch new backend. &#xff08;2&#xff09;选择计划&…

【PowerMockito:编写单元测试过程中原方法使用@Value注解注入的属性出现空指针】

错误场景 执行到Value的属性时会出现空指针&#xff0c;因为Value的属性为null 解决方法 在测试类调用被测试方法前&#xff0c;提前设置属性值&#xff0c;属性可以先自己定义好 ReflectionTestUtils.setField(endpointConnectionService, "exportUdpList", lis…

修改Yaml文件报错“块映射中的子元素无效”

开发环境 Golandpbyaml文件开发的 错误信息 新增了一个配置项&#xff0c;随后提示&#xff1a;“块映射中的子元素无效” 错误原因 yaml文件的格式要求严格&#xff0c;在:的后面要求有一个 空格&#xff0c;本次就是漏掉错误导致的犯错。 其他可能原因 以下答案来自GP…

工业深度学习异常缺陷检测实战

在工业生产过程中&#xff0c;由于现有技术、工作条件等因素的不足和局限性&#xff0c;极易影响制成品的质量。其中&#xff0c;表面缺陷是产品质量受到影响的最直观表现&#xff0c;因此&#xff0c;为了保证合格率和可靠的质量&#xff0c;必须进行产品表面缺陷检测。 “缺陷…

流动性、价格发现与安全性:NFG在二级市场和交易所的联动效应

每天五分钟一套互联网知识&#xff0c;大家好我是啊浩说模式 在数字经济蓬勃发展的今天&#xff0c;非同质化代币&#xff08;NFT&#xff09;作为区块链技术的重要应用之一&#xff0c;正逐渐改变着传统艺术品、收藏品市场的格局。其中&#xff0c;NFG作为NFT领域的一个细分领…

制片管理工具:提高制片效率的必备工具

一、什么是制片管理工具 制片管理工具是一种为制片人提供支持和协助的软件或工具&#xff0c;并提供一种集中管理制作进度、任务分配、成本预算、资源管理和进度跟踪的方式。它可以帮助制片人在项目的开发、制作和发布方面更有效地进行规划和监督&#xff0c;确保整个流程能够…

LLM | Gemma的初体验

一起来体验一下吧~ 技术报告书&#xff1a;jgoogle/gemma-7b-it Hugging Facegemma-report.pdf (storage.googleapis.com) 代码1 &#xff1a;google-deepmind/gemma: Open weights LLM from Google DeepMind. (github.com) 代码2 &#xff1a;https://github.com/google/gem…

如何根据 tcode查询对应 bapi

有时会查不到&#xff0c;此时需要 google 一下 对应程序&#xff0c;或tcode bapi tcode MD04 MD_STOCK_REQUIREMENTS_LIST_API 参考 https://blog.csdn.net/weixin_45499651/article/details/104050517 SAP ABAP 各模块的BAPI函数汇总 https://blog.csdn.net/yishangbin…

使用cargo国内镜像

1、进入C:\Users\Administrator\.cargo&#xff0c;Administrator是你的用户名。 2、删除.package-cache文件。 3、新建一个config文件&#xff0c;即新建一个txt文档&#xff0c;然后将文档的文件后缀删除。 4、输入一下内容。 #.cargo目录下创建文件config&#xff0c;文…

报名开启丨掘金海外,探寻泛娱乐社交APP出海新风口

随着国内泛娱乐行业用户规模趋于见顶&#xff0c;泛娱乐社交APP转向出海是必然趋势。 根据行业数据显示&#xff0c;有超过35%的国内实时社交企业已启动或者正在规划出海&#xff0c;而其中出海商户的音视频流量增长均超过了100&#xff05;。尤其是在东南亚、中东、拉美等新兴…

Maya笔记 软选择

文章目录 1什么是软选择2注意3如何打开软选择3.1方法一3.2方法二 4调整软选择的范围5衰减模式5.1体积模式5.2表面模式 6衰减曲线 1什么是软选择 也就是渐变选择&#xff0c;从中心点向外影响力度越来越小 软选择针对的是点线面这些模型元素 下图中展示了对被软选择的区域移动…

Rust入门:Rust如何调用C静态库的函数

关于Rust调用C&#xff0c;因为接口比较复杂&#xff0c;貌似Rust不打算支持。而对于C函数&#xff0c;则相对支持较好。 如果要研究C/Rust相互关系的话&#xff0c;可以参考&#xff1a; https://docs.rs/cxx/latest/cxx/ Rust ❤️ C 这里只对调用C静态库做一个最简短的介…

Hi1102A和Hi1105比照浅析

Hi1102A和Hi1105V500都是属于海思旗下的两款WIFIBTGNSSFM四功能一体(江湖俗称四合一)高性能方案&#xff0c;应该可以推出&#xff0c;这个原本是在手机方案集成使用的&#xff0c;本身海思有视频安防主控HI315X系列平台&#xff0c;如果搭配上自己的无线phy芯片&#xff0c;一…

干货教程【软件篇】如何在Windows上安装Python环境以及设置国内源(Miniconda/Anaconda安装)

本文章涉及的所有安装包均在文章下方公众号中&#xff0c;回复python即可获取资源。 也可关注我们的官方网站&#xff1a; 考拉AI 小白安装前须了解一下 Python解释器是用来解释运行我们编写的Python代码。 Python标准库是Python自带的一系列标准模块&#xff0c;提供了各种…