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

【代码随想录】哈希表

文章目录

  • 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项目中的跨域配置指南

她坐红帐 面带浓妆 唢呐一声唱 明月光 这女子泪眼拜高堂 一拜天地日月 二拜就遗忘这一生 跪三拜红尘凉 庭院 大门锁上 杂乱的眼光 多喧嚷 这女子笑颜几惆怅 余生喜乐悲欢都无关 她眼中已无光 &#x1f3b5; 倪莫问《三拜红尘凉》 在前后端分离的项目开发中…...

跨站脚本攻击XSS

漏洞产生原因&#xff1a; XSS攻击本质上是一种注入攻击&#xff0c;产生原因是Web应用对外部输入参数处理不当&#xff0c;攻击者将恶意代码注入当前Web界面&#xff0c;在用户访问时执行 漏洞攻击手段&#xff1a; 反射型&#xff08;非持久型&#xff09;XSS-将payload包…...

C++中的vector与C语言中的数组的区别

C中的vector和C语言中的数组在很多方面都有所不同&#xff0c;以下是它们之间的一些主要区别&#xff1a; 大小可变性&#xff1a; vector是C标准模板库&#xff08;STL&#xff09;提供的动态数组容器&#xff0c;它的大小可以动态增长或减少。这意味着你可以在运行时添加或删…...

drawio画图编辑图形颜色

drawio画图编辑图形颜色 团队的安全第一图表。将您的存储空间带到我们的在线工具中&#xff0c;或使用桌面应用程序进行本地保存。 1.安装准备 1.1安装平台 多平台 1.2在线使用 浏览器打开网页使用 1.3软件下载 drawio官网github仓库下载 2.在浏览器的网页中使用drawio…...

uniapp中uni.navigateTo传递变量

效果展示&#xff1a; 核心代码&#xff1a; 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项目&#xff0c;以war包形式部署到服务器上&#xff0c;启动项目发现该服务无法在Nacos中注册。 2. 分析 SpringCloud 项目打 war 包部…...

(2024,Attention-Mamba,MoE 替换 MLP)Jamba:混合 Transformer-Mamba 语言模型

Jamba: A Hybrid Transformer-Mamba Language Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 模型架构 3. 收获的好处 3.1 单个 80GB GPU 的 Jamba 实现 …...

“Java泛型” 得所憩,落日美酒聊共挥

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…...

pdf、docx、markdown、txt提取文档内容,可以应用于rag文档解析

返回的是文档解析分段内容组成的列表&#xff0c;分段内容默认chunk_size: int 250, chunk_overlap: int 50&#xff0c;250字分段&#xff0c;50分段处保留后面一段的前50字拼接即窗口包含下下一段前面50个字划分 from typing import Union, Listimport jieba import recla…...

【Linux系列】“dev-node1“ 运行的操作系统分析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

SpriingBoot整合MongoDB多数据源

背景&#xff1a; MongoDB多数据源&#xff1a;springboot为3以上版本&#xff0c;spring-boot-starter-data-mongodb低版本MongoDBFactory已过时&#xff0c; 改为MongoDatabaseFactory。 1、pom引入&#xff1a; <dependency><groupId>org.springframework.boo…...

深入浅出 -- 系统架构之负载均衡Nginx缓存机制

一、Nginx缓存机制 对于性能优化而言&#xff0c;缓存是一种能够大幅度提升性能的方案&#xff0c;因此几乎可以在各处都能看见缓存&#xff0c;如客户端缓存、代理缓存、服务器缓存等等&#xff0c;Nginx的缓存则属于代理缓存的一种。对于整个系统而言&#xff0c;加入缓存带来…...

前端 小程序框架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如何为楼宇自动化行业提供空调、供暖与通风的解决方案?

一、应用背景 楼宇自动化行业是通过将先进的技术和系统应用于建筑物中&#xff0c;以提高其运营效率、舒适度和能源利用效率的行业&#xff0c;其目标是使建筑物能够自动监控、调节和控制各种设备和系统&#xff0c;包括照明系统、空调系统、安全系统、通风系统、电力供应系统…...

【TI毫米波雷达】官方工业雷达包的生命体征检测环境配置及避坑(Vital_Signs、IWR6843AOPEVM)

【TI毫米波雷达】官方工业雷达包的生命体征检测环境配置及避坑&#xff08;Vital_Signs、IWR6843AOPEVM&#xff09; 文章目录 生命体征基本介绍IWR6843AOPEVM的配置上位机配置文件避坑上位机start测试距离检测心跳检测呼吸频率检测空环境测试 附录&#xff1a;结构框架雷达基…...

计算机毕业设计选题之基于SSM的旅游管理系统【源码+PPT+文档+包运行成功+部署讲解】

&#x1f493;项目咨询获取源码联系v&#x1f493;xiaowan1860&#x1f493; &#x1f6a9;如何选题&#xff1f;&#x1f351; 对于项目设计中如何选题、让题目的难度在可控范围&#xff0c;以及如何在选题过程以及整个毕设过程中如何与老师沟通&#xff0c;有疑问不清晰的可…...

JavaWeb入门——Web前端概述及HTML,CSS语言基本使用

前言&#xff1a; java基础已经学完&#xff0c;开始学习javaWeb相关的内容&#xff0c;整理下笔记&#xff0c;打好基础&#xff0c;daydayup!!! Web Web&#xff1a;全球广域网&#xff0c;也称万维网&#xff08;www World Wide Web&#xff09;&#xff0c;能够通过浏览器访…...

数据结构(3)----栈和队列

目录 一.栈 1.栈的基本概念 2.栈的基本操作 3.顺序栈的实现 •顺序栈的定义 •顺序栈的初始化 •进栈操作 •出栈操作 •读栈顶元素操作 •若使用另一种方式: 4.链栈的实现 •链栈的进栈操作 •链栈的出栈操作 •读栈顶元素 二.队列 1.队列的基本概念 2.队列的基…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...