【代码随想录】哈希表
文章目录
- 242.有效的字母异位词
- 349. 两个数组的交集
- 202. 快乐数
- 1. 两数之和
- 454. 四数相加 II
- 383. 赎金信
- 15. 三数之和
- 18. 四数之和
242.有效的字母异位词
class Solution {public boolean isAnagram(String s, String t) {if(s==null || t==null || s.length()!=t.length()){return false;}Map<Character, Integer> mapS=strToMap(s);Map<Character, Integer> mapT=strToMap(t);return mapS.equals(mapT);}private Map<Character, Integer> strToMap(String str){Map<Character, Integer> map = new HashMap<>();for(int i=0;i<str.length();i++){char ch=str.charAt(i);// if(map.containsKey(ch)){// map.put(ch,map.get(ch)+1);// }else{// map.put(ch,1);// }map.put(ch, map.getOrDefault(ch,0)+1);}return map;}
}
为什么用下面的代码代替 equals() 方法来判断两个 Map 的内容是否相等时,会有一个测试用例不通过?
for(Map.Entry<Character, Integer> entry:mapS.entrySet()){Character keyS=entry.getKey();Integer valueS=entry.getValue();if(!mapT.containsKey(keyS) || mapT.get(keyS)!=valueS){return false;}
}
349. 两个数组的交集
class Solution {public int[] intersection(int[] nums1, int[] nums2) {if(nums1==null || nums2==null){return null;}// 分别将两个数组转成Set集合,去重Set<Integer> set1=new HashSet<>();for(int i=0;i<nums1.length;i++){set1.add(nums1[i]);}Set<Integer> set2=new HashSet<>();for(int i=0;i<nums2.length;i++){set2.add(nums2[i]);}//求set1与set2的交集,交集保存在set1中//retainAll:保留两者都有的set1.retainAll(set2);int[] num=new int[set1.size()];int j=0;for(Integer item:set1){num[j++]=item;}return num;}
}
202. 快乐数
class Solution {public boolean isHappy(int n) {// 将正整数n的每一位放入List集合,升序排列List<Integer> list = getNewList(n);Set<List> set=new HashSet<>();int sum=-1;while(true){if(set.contains(list)){return false;}sum=listSum(list);if(sum==1){return true;}else{set.add(list);list=getNewList(sum);}}}private List<Integer> getNewList(int num){List<Integer> list = new ArrayList<>();while(num/10!=0){int modRes=num%10;list.add(modRes);num/=10;}list.add(num); Collections.sort(list);return list;}private int listSum(List<Integer> list){int sum=0;for (Integer item : list) {sum+=item*item;}return sum;}
}
1. 两数之和
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> map=new HashMap<>();for(int i=0;i<nums.length;i++){// 要在数组元素还未进Map集合时判断Map中是否有target-nums[i])if(map.containsKey(target-nums[i])){return new int[]{map.get(target-nums[i]), i};}//Map中,key是数组元素值,value是元素在数组中的下标map.put(nums[i],i);}return null;}
}
454. 四数相加 II
思路:将四个数组分为两组处理。
class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {Map<Integer, Integer> map=new HashMap<>();for(int i=0;i<nums1.length;i++){for(int j=0;j<nums2.length;j++){int sum = nums1[i]+nums2[j];map.put(sum, map.getOrDefault(sum, 0)+1);}}int count=0;for(int i=0;i<nums3.length;i++){for(int j=0;j<nums4.length;j++){int sum = nums3[i]+nums4[j];if(map.containsKey(-sum)){count+=map.get(-sum);}}}return count;}
}
383. 赎金信
class Solution {public boolean canConstruct(String ransomNote, String magazine) {// 将magazine中的字符以及对应出现的频率记录到Map中Map<Character,Integer> map=new HashMap<>();for(int i=0;i<magazine.length();i++){map.put(magazine.charAt(i),map.getOrDefault(magazine.charAt(i),0)+1);} for(int i=0;i<ransomNote.length();i++){char currentCh = ransomNote.charAt(i);if(!map.containsKey(currentCh)){return false;}else{map.put(currentCh,map.get(currentCh)-1);if(map.get(currentCh)==0){map.remove(currentCh);}}}return true;}
}
15. 三数之和
用了哈希表,时间超限,据说用排序+双指针思路简单且可行,后面刷到双指针的题再完成这个方法的题解。
class Solution {public List<List<Integer>> threeSum(int[] nums) {// key:两个元素的和 value:所有和等于key的元素组合,以下标的形式记录Map<Integer, List<List<Integer>>> map = new HashMap<>();for(int i=0;i<nums.length;i++){for(int j=i+1;j<nums.length;j++){// 将前两个元素包装到List中List<Integer> innerList=new ArrayList<>();innerList.add(i);innerList.add(j);int key=nums[i]+nums[j];if(!map.containsKey(key)){List<List<Integer>> outerList=new ArrayList<>(); outerList.add(innerList);map.put(key, outerList);}else{map.get(key).add(innerList);}}}Set<List<Integer>> resSet=new HashSet<>(); for(int k=0;k<nums.length;k++){if(map.containsKey(-nums[k])){List<List<Integer>> outerList=map.get(-nums[k]);for(List<Integer> innerList : outerList){if(!innerList.contains(k)){List<Integer> innerResList=new ArrayList<>();innerResList.add(nums[innerList.get(0)]);innerResList.add(nums[innerList.get(1)]);innerResList.add(nums[k]);Collections.sort(innerResList);resSet.add(innerResList);}}}}return new ArrayList<>(resSet);}
}
18. 四数之和
跟三数之和一样,也是排序+双指针,刷到双指针再做。
相关文章:
【代码随想录】哈希表
文章目录 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和454. 四数相加 II383. 赎金信15. 三数之和18. 四数之和 242.有效的字母异位词 class Solution {public boolean isAnagram(String s, String t) {if(snull || tnull || s.length()!t.length()){return …...
绘图工具 draw.io / diagrams.net 免费在线图表编辑器
拓展阅读 常见免费开源绘图工具 OmniGraffle 创建精确、美观图形的工具 UML-架构图入门介绍 starUML UML 绘制工具 starUML 入门介绍 PlantUML 是绘制 uml 的一个开源项目 UML 等常见图绘制工具 绘图工具 draw.io / diagrams.net 免费在线图表编辑器 绘图工具 excalidr…...
【Vue】 Vue项目中的跨域配置指南
她坐红帐 面带浓妆 唢呐一声唱 明月光 这女子泪眼拜高堂 一拜天地日月 二拜就遗忘这一生 跪三拜红尘凉 庭院 大门锁上 杂乱的眼光 多喧嚷 这女子笑颜几惆怅 余生喜乐悲欢都无关 她眼中已无光 🎵 倪莫问《三拜红尘凉》 在前后端分离的项目开发中…...
跨站脚本攻击XSS
漏洞产生原因: XSS攻击本质上是一种注入攻击,产生原因是Web应用对外部输入参数处理不当,攻击者将恶意代码注入当前Web界面,在用户访问时执行 漏洞攻击手段: 反射型(非持久型)XSS-将payload包…...
C++中的vector与C语言中的数组的区别
C中的vector和C语言中的数组在很多方面都有所不同,以下是它们之间的一些主要区别: 大小可变性: vector是C标准模板库(STL)提供的动态数组容器,它的大小可以动态增长或减少。这意味着你可以在运行时添加或删…...
drawio画图编辑图形颜色
drawio画图编辑图形颜色 团队的安全第一图表。将您的存储空间带到我们的在线工具中,或使用桌面应用程序进行本地保存。 1.安装准备 1.1安装平台 多平台 1.2在线使用 浏览器打开网页使用 1.3软件下载 drawio官网github仓库下载 2.在浏览器的网页中使用drawio…...
uniapp中uni.navigateTo传递变量
效果展示: 核心代码: uniapp中uni.navigateTo传递变量 methods: {changePages(item) {setDatas("maintenanceFunName", JSON.stringify(item)).then((res) > {uni.navigateTo({url: /pages/PMS/maintenance/maintenanceTypes/maintenanceT…...
Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务
Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务 1. 问题2. 分析3. 解决方案参考 1. 问题 使用Nacos作为注册中心的Spring Boot项目,以war包形式部署到服务器上,启动项目发现该服务无法在Nacos中注册。 2. 分析 SpringCloud 项目打 war 包部…...
(2024,Attention-Mamba,MoE 替换 MLP)Jamba:混合 Transformer-Mamba 语言模型
Jamba: A Hybrid Transformer-Mamba Language Model 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 模型架构 3. 收获的好处 3.1 单个 80GB GPU 的 Jamba 实现 …...
“Java泛型” 得所憩,落日美酒聊共挥
本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…...
pdf、docx、markdown、txt提取文档内容,可以应用于rag文档解析
返回的是文档解析分段内容组成的列表,分段内容默认chunk_size: int 250, chunk_overlap: int 50,250字分段,50分段处保留后面一段的前50字拼接即窗口包含下下一段前面50个字划分 from typing import Union, Listimport jieba import recla…...
【Linux系列】“dev-node1“ 运行的操作系统分析
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
SpriingBoot整合MongoDB多数据源
背景: MongoDB多数据源:springboot为3以上版本,spring-boot-starter-data-mongodb低版本MongoDBFactory已过时, 改为MongoDatabaseFactory。 1、pom引入: <dependency><groupId>org.springframework.boo…...
深入浅出 -- 系统架构之负载均衡Nginx缓存机制
一、Nginx缓存机制 对于性能优化而言,缓存是一种能够大幅度提升性能的方案,因此几乎可以在各处都能看见缓存,如客户端缓存、代理缓存、服务器缓存等等,Nginx的缓存则属于代理缓存的一种。对于整个系统而言,加入缓存带来…...
前端 小程序框架UniApp
小程序框架UniApp uni-app简介uni-app项目结构uni-app开发工具HBuilderXuni-app页面uni-app页面生命周期uni-app组件生命周期uni-app页面调用接口uni-app页面通讯uni-app pages.json 页面路由uni-app组件viewuni-app组件scroll-viewuni-app组件swiperuni-app组件textuni-app组…...
宏集PLC如何为楼宇自动化行业提供空调、供暖与通风的解决方案?
一、应用背景 楼宇自动化行业是通过将先进的技术和系统应用于建筑物中,以提高其运营效率、舒适度和能源利用效率的行业,其目标是使建筑物能够自动监控、调节和控制各种设备和系统,包括照明系统、空调系统、安全系统、通风系统、电力供应系统…...
【TI毫米波雷达】官方工业雷达包的生命体征检测环境配置及避坑(Vital_Signs、IWR6843AOPEVM)
【TI毫米波雷达】官方工业雷达包的生命体征检测环境配置及避坑(Vital_Signs、IWR6843AOPEVM) 文章目录 生命体征基本介绍IWR6843AOPEVM的配置上位机配置文件避坑上位机start测试距离检测心跳检测呼吸频率检测空环境测试 附录:结构框架雷达基…...
计算机毕业设计选题之基于SSM的旅游管理系统【源码+PPT+文档+包运行成功+部署讲解】
💓项目咨询获取源码联系v💓xiaowan1860💓 🚩如何选题?🍑 对于项目设计中如何选题、让题目的难度在可控范围,以及如何在选题过程以及整个毕设过程中如何与老师沟通,有疑问不清晰的可…...
JavaWeb入门——Web前端概述及HTML,CSS语言基本使用
前言: java基础已经学完,开始学习javaWeb相关的内容,整理下笔记,打好基础,daydayup!!! Web Web:全球广域网,也称万维网(www World Wide Web),能够通过浏览器访…...
数据结构(3)----栈和队列
目录 一.栈 1.栈的基本概念 2.栈的基本操作 3.顺序栈的实现 •顺序栈的定义 •顺序栈的初始化 •进栈操作 •出栈操作 •读栈顶元素操作 •若使用另一种方式: 4.链栈的实现 •链栈的进栈操作 •链栈的出栈操作 •读栈顶元素 二.队列 1.队列的基本概念 2.队列的基…...
nestjs 全栈进阶--module
视频教程 10_模块Module1_哔哩哔哩_bilibili 1. 模块Module 在 Nest.js 中,Module 是框架的核心概念之一,用于组织和管理应用程序的不同部分,包括服务、控制器、中间件以及其他模块的导入。每个 Nest.js 应用程序至少有一个根模块…...
jupyter python paramiko 网络系统运维
概述 通过使用jupyter进行网络运维的相关测试 设备为H3C 联通性测试 import paramiko import time import getpass import re import os import datetimeusername "*****" password "*****" ip "10.32.**.**"ssh_client paramiko.SSHCli…...
Windows Edge浏览器兼容性问题诊断与修复策略详解
随着Microsoft Edge浏览器的持续迭代与更新,其性能与兼容性已得到了显著提升。然而,在面对互联网上纷繁复杂的网页内容时,仍有可能遇到兼容性问题。本文旨在探讨Edge浏览器在处理网页兼容性问题时的常见场景、原因分析及相应的解决方案&#…...
EXCEL学习笔记
EXCEL学习笔记 小技巧 一键批量添加后缀名词/单词 单元格格式-自定义-通用格式后面输入相应的单位,比如“元”。 输入10000个序号,先输入1,点击开始-填充-序列,选中该列,终止值为10000; 按住shift选取多个…...
使用预训练的bert large model实现问答系统源码(本地实现 question answer system)
pre-trained bert model 预训练好的Bert模型 本地实现问答系统 用这条命令将bert下载到本地: model.save_pretrained("path/to/model") 具体代码 如下链接: https://download.csdn.net/download/qqqweiweiqq/89092005...
蓝桥杯 历届真题 杨辉三角形【第十二届】【省赛】【C组】
资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 思路: 由于我第一写没考虑到大数据的原因,直接判断导致只得了40分,下面是我的代码: #…...
商务电子邮件: 在WorkPlace中高效且安全
高效和安全的沟通是任何组织成功的核心。在我们关于电子邮件类型的系列文章的第二期中,我们将重点关注商业电子邮件在促进无缝交互中的关键作用。当你身处重要的工作场环境时,本系列的每篇文章都提供了电子邮件的不同维度的视角。 “2024年,全…...
阿里云2024年优惠券领取及使用常见问题
阿里云是阿里巴巴旗下云计算品牌,服务涵盖云服务器、云数据库、云存储、域名注册等全方位云服务和各行业解决方案。为了吸引用户上云,阿里云经常推出各种优惠活动,其中就包括阿里云优惠券。本文将对阿里云优惠券领取及使用常见问题进行解答&a…...
90天玩转Python—05—基础知识篇:Python基础知识扫盲,使用方法与注意事项
90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…...
常见的常见免费开源绘图工具对比 draw.io/Excalidraw/Lucidchart/yEd Graph Editor/Dia/
拓展阅读 常见免费开源绘图工具 OmniGraffle 创建精确、美观图形的工具 UML-架构图入门介绍 starUML UML 绘制工具 starUML 入门介绍 PlantUML 是绘制 uml 的一个开源项目 UML 等常见图绘制工具 绘图工具 draw.io / diagrams.net 免费在线图表编辑器 绘图工具 excalidr…...
做网站如何选择颜色/网页开发教程
github下载的Demo,很多时候使用到CocoaPods,有的时候因为依赖关系或者版本问题不能编译运行。出现例如The sandbox is not sync with the Podfile.lock问题时候 解决方案:关闭当前的工作空间,删除掉文件夹中的workspace,然后重新p…...
做网站的公司广州/学校网站建设
android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确: canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);最后一个参数有多个选择分别是://DIFFERENCE是第一次不同于第二次的部分显示出来 …...
做购物比价的网站/网址ip地址查询工具
原文链接:https://cloud.google.com/kubernetes-engine/kubernetes-comic/后台回复“加群”,带你进入高手如云交流群▼喜欢,就给我一个“在看”10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络…...
foxmail 网站/南宁seo网络推广
转自:https://www.cnblogs.com/heartstage/p/3362140.html 第一章: servlet2.3规范用到了一下的一些规范:J2EE、JSP1.1、JNDI 在14章中讲述了规范中的所有的classes类或接口(改文中不讲述)。对开发者而言以下的有些…...
网站建设负责人证明/免费seo
与现在流行的编程语言Java、C、C等相比较,同样是完成一个功能,Python编写的代码短小精干,开发的效率是其它语言的好几倍。所以如果你想尝试成为程序员,Python将会是一个重要的选择,Python是最适合的入门语言。接下来&a…...
学校网站查询/苏州网站建设书生
一、PSP T名称C内容ST开始时间ED结束时间中断时间实际时间学习重要知识点MAP容器、vector9月15日9:309月15日12:0030120排序算法9月15日13:159月15日14:001035流文件9月15日14:009月15日14:30525C其他知识9月15日14:309月15日16:003060编程 编写代码9月15日18:009月15日23:00…...