保研机试算法训练个人记录笔记(四)——哈希算法

目录

两数之和

字母异位词分组 

最长连续序列 


力扣热题100——哈希算法

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {map<int,int> m;for(int i=0;i<nums.size();i++){auto it = m.find(target-nums[i]);
//find的返回值是{k,v},查找的是k,也就是说k=target-nums[i]if(it != m.end()){return{it->second,i};//返回v,这里的含义是index}m[nums[i]]=i;//如果没有找到,就把这个数添加进哈希表}return{};}
};

字母异位词分组 

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {int n=strs.size();
//在这里执行一次静态的计算会比在循环中使用strs.size()节省时间unordered_map<string,vector<string>>m;
//vector:可动态扩展列表;unordered_map比map节省内存for(int i =0;i<n;i++){string str= strs[i];sort(str.begin(),str.end());m[str].push_back(strs[i]);}vector<vector<string>>res;for(auto it=m.begin();it!=m.end();it++){//灵活的开始与结束res.push_back(it->second);}return res;}
};

最长连续序列 

 

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
class Solution {
public:int longestConsecutive(vector<int>& nums) {//find x,x+1,x+2....x+y;len=y-x+1unordered_set<int> m;for(auto i : nums) m.insert(i);int res=0;for(auto x : m){//C++11访问列表元素方法,并自动赋值if(!m.count(x-1)){//确认x为起始元素,if x-1 exist, x is not beginint y = x; // ues y  as end figerwhile(m.count(y+1)) y++;res=max(res,y-x+1);			}		}return res;
}
};

 

 

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

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

相关文章

wireshark抓包问题及学习

wireshark抓包问题及学习 【场景1】服务A请求服务B经常超过3s&#xff0c;报错i/o timeout&#xff0c;想看下是否网络波动或者负载太高。需要抓包分析。 问题1&#xff1a; 超时时间不定&#xff0c;且请求量过大&#xff0c;一直抓了存文件里抓包文件过大。 解决学习&…

三、搜索与图论

DFS 排列数字 #include<iostream> using namespace std; const int N 10; int a[N], b[N]; int n;void dfs(int u){if(u > n){for(int i 1; i < n; i)cout<<a[i]<<" ";cout<<endl;return;}for(int i 1; i < n; i){if(!b[i]){b[…

LeetCode91. Decode Ways——动态规划

文章目录 一、题目二、题解 一、题目 A message containing letters from A-Z can be encoded into numbers using the following mapping: ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” To decode an encoded message, all the digits must be grouped then …

数据结构——5.3 二叉树的遍历和线索二叉树

第五章 树与二叉树 5.3 二叉树的遍历和线索二叉树 概念 1.线索二叉树&#xff1a;为了快速得到遍历序列的前驱和后继 2. 理解 1.线索二叉树是一种物理结构&#xff0c;二叉树一种逻辑结构 2.n个结点的线索二叉树具有2n个链域指针&#xff0c;除了根节点外&#xff0c;每个结…

自己DIY制作耳机壳一般用哪种材料比较好,性价比比较高

在选择耳机壳的材料时&#xff0c;除了考虑材料本身的性能外&#xff0c;还需要考虑成本、加工难度、耐用性、环保性等方面的因素。 从性能方面来看&#xff1a; 制作耳机壳的UV树脂和塑料材质各有其优缺点。UV树脂具有高硬度、耐磨、耐高温、环保等优点&#xff0c;能够提供更…

用爬虫自建行业知识库

一 几年前用 Python 写过一个程序&#xff0c;自动抓取各市文化局网站相关栏目文章&#xff0c;然后把抓到的文章&#xff0c;写成离线网页&#xff0c;发到指定邮箱。 当时针对每个网页写一个爬虫&#xff0c;对每一个网页都进行分析。比如&#xff0c;标题是什么&#xff0…

node.js 使用 elementtree 生成思维导图 Freemind 文件

请参阅: java : pdfbox 读取 PDF文件内书签 请注意&#xff1a;书的目录.txt 编码&#xff1a;UTF-8&#xff0c;推荐用 Notepad 转换编码。 npm install elementtree --save 编写 txt_etree_mm.js 如下 // 读目录.txt文件&#xff0c;使用 elementtree 生成思维导图 Free…

【FFmpeg】ffplay 命令行参数 ⑤ ( 设置音频滤镜 -af 参数 | 设置统计信息 -stats 参数 | 设置同步时钟类型 -sync 参数 )

文章目录 一、ffplay 命令行参数 - 音频滤镜1、设置音频滤镜 -af 参数2、常用的 音频滤镜 参数3、音频滤镜链 示例 二、ffplay 命令行参数 - 统计信息1、设置统计信息 -stats 参数2、关闭统计信息 -nostats 参数 三、ffplay 命令行参数 - 同步时钟类型1、设置同步时钟类型 -syn…

【前沿技术杂谈:多模态文档基础模型】使用多模态文档基础模型彻底改变文档 AI

【前沿技术杂谈&#xff1a;多模态文档基础模型】使用多模态文档基础模型彻底改变文档 AI 从文本到多模态模型&#xff1a;文档 AI 逐渐发展新技能。行业领先的型号Document AI 的下一步&#xff1a;开发通用和统一框架 您是否曾经被包含不同信息&#xff08;如应付账款、日期、…

Web后端开发:事务与AOP

事务管理 在学习数据库时&#xff0c;讲到&#xff1a;事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求&#xff0c;要么同时成功&#xff0c;要么同时失败。 事务的操作主要有三…

已解决org.springframework.web.HttpMediaTypeNotAcceptableException异常的正确解决方法,亲测有效!!!

已解决org.springframework.web.HttpMediaTypeNotAcceptableException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 总结 问题分析 在Spring MVC应用中处理HTTP请求时&#xff0c;我们有…

C#向数组指定索引位置插入新的元素值:自定义插入方法 vs List<T>.Add(T) 方法

目录 一、使用的方法 1.自定义插入方法 2.使用List.Add(T) 方法 二、实例 1.示例1&#xff1a;List.Add(T) 方法 2.示例&#xff1a;自定义插入方法 一、使用的方法 1.自定义插入方法 首先需要定义一个一维数组&#xff0c;然后修改数组的长度(这里使用Length属性获取…

【OpenHarmony硬件操作】WIFI模块的操作(udp+tcp)

文章目录 前言一、网络的连接1.1 WIFI模块有三大功能1.2 相关接口连接网络等待网络连接成功创建一个热点获取本设备ip地址二、tcp客户端的使用2.1 创建socket2.2 sockaddr_in结构体2.3 connect连接服务器2.4 接收数据2.5 发送数据三、UDP

网关中全局过滤器实现jwt校验

意味着有很多相同接口的实现类&#xff0c;那么必定会有优先级的问题。于是Spring就提供了Ordered这个接口&#xff0c;来处理相同接口实现类的优先级问题。 public class AuthorizeFilter implements Ordered, GlobalFilter {Overridepublic Mono<Void> filter(ServerW…

Linux应用程序几种参数传递方式

大家好&#xff0c;今天给大家介绍Linux应用程序几种参数传递方式&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在Linux中&#xff0c;应用程序可以通过多种方式接收参数。以下…

栈的基本操作

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

【Java面试】数据类型常见面试题

什么是包装类型 将基本类型包装进了对象中得到的类型 基本类型和包装类型有什么区别 用途不同&#xff1a;基本类型一般用于局部变量&#xff0c;包装类型用于其他地方存储方式不同&#xff1a;用于局部变量的基本类型存在虚拟机栈中的局部变量表中&#xff0c;用于成员变量…

(51)汉明距离

文章目录 每日一言题目解题思路代码结语 每日一言 岁月因青春慨然以赴而更加静好&#xff0c;世间因少年挺身向前而更加瑰丽。 题目 题目链接&#xff1a;汉明距离 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0…

物联网数据隐私保护技术

在物联网&#xff08;IoT&#xff09;的世界中&#xff0c;无数的设备通过互联网连接在一起&#xff0c;不断地收集、传输和处理数据。这些数据有助于提高生产效率、优化用户体验并创造新的服务模式。然而&#xff0c;随着数据量的剧增&#xff0c;数据隐私保护成为了一个不能忽…

python笔记12

目录 1、文件的基本操作步骤 1.打开文件&#xff08;Open File&#xff09;&#xff1a; 2.读取文件内容&#xff08;Read File&#xff09;&#xff1a; 3.写入文件内容&#xff08;Write to File&#xff09;&#xff1a; 4.file.seek() 5.文件复制&#xff1a; 6.wit…