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

【JAVA算法|hot100】哈希类型题目详解笔记

这里记录刷hot100的思考过程详解,方便后续记忆复习。

题号1



1. 两数之和

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

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

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

具体题解
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> hashmap=new HashMap<>(); int i=0; for(int num:nums){ if(hashmap.containsKey(target-nums[i])){ return new int[]{i,hashmap.get(target-nums[i])}; } hashmap.put(nums[i],i); i++; } return new int[0]; } }
思路解析

通过containsKey查找之前是否存入过target-num[i]

必会知识

1.containsKey函数

2.数组初始化new int[]{x,y}

题号49

49. 字母异位词分组

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

具体题解
class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String,List<String>> map=new HashMap<>(); for(String str:strs){ char[] array=str.toCharArray(); Arrays.sort(array); String key=new String(array); List<String> list=map.getOrDefault(key,new ArrayList<String>()); list.add(str); map.put(key,list); } return new ArrayList<List<String>>(map.values()); } }
思路解析

对每个字符串排序,异位词排序后一定相同。

必会知识

1.字符串转为字符数组,toCharArray()

2.字符数组排序,Arrays.sort()

3.字符串可通过字符数组初始化,new String(array)

4.获取原有异位词集合或新集合列表,getOrDefault(key,new ArrayList<String>());

5.只获取hashmap的value值集合,map.values()

题号128

128. 最长连续序列

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

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

具体题解
class Solution { public int longestConsecutive(int[] nums) { Set<Integer> hashset=new HashSet<>(); for(int num:nums){ hashset.add(num); } int max=0; for(int num:hashset){ if(!hashset.contains(num-1)){ int currentnum=num; int currentmax=1; while(hashset.contains(currentnum+1)){ currentmax+=1; currentnum+=1; } max=Math.max(max,currentmax); } } return max; } }
思路解析

先通过hashset去重,然后找到每个连续序列的最开始数字,去遍历计算最长序列。

必会知识

hashset的使用

http://www.jsqmd.com/news/403155/

相关文章:

  • 人声伴奏分离工具5款实测精选
  • Chatbot自然语言转SQL的底层实现与工程实践
  • AI智能客服搭建实战:从技术选型到生产环境部署
  • 基于AI的智能客服系统:从架构设计到生产环境部署的实战指南
  • Uniapp微信小程序对接腾讯云智能客服的AI辅助开发实践
  • AI辅助开发中的Chatbot切片策略:高并发场景下的实现与优化
  • 企业微信智能客服群聊回复的AI辅助开发实战:从架构设计到性能优化
  • Chatbot Arena排名深度解析:如何正确解读与实战应用
  • LangChain RAG 在智能客服中的实战应用与架构解析
  • ChatGPT Prompt Engineering实战指南:开发者如何构建高效AI辅助开发流程
  • Java AI智能客服项目实战:从架构设计到生产环境避坑指南
  • 客服智能体搭建实战:从架构设计到性能优化的全链路指南
  • AI辅助开发实战:扣子智能客服架构解析与性能优化指南
  • 基于Dify构建智能客服系统的架构设计与实战避坑指南
  • ChatGPT Code Interpreter 实战指南:从数据处理到自动化工作流
  • HarmonyOS应用开发实战(基础篇)Day09-《构建布局详解下》
  • Koodo Reader(开源电子书阅读器)
  • 智能客服运营效率提升实战:从架构优化到精准分流
  • 用一个厨房故事,看懂Java高并发(通俗无门槛,小白也能懂)
  • Chat TTS API 实战:如何构建高并发语音合成服务
  • 用一个故事,看懂Java JVM所有核心技术(通俗无门槛,小白也能懂)
  • 全渠道智能云客服架构解析:如何实现高并发消息处理与多平台无缝集成
  • 基于Coze构建高可用智能客服系统的实战指南:从架构设计到性能优化
  • 【节点】[ShadowMask节点]原理解析与实际应用
  • ChatGPT购物技术解析:如何构建智能电商对话系统
  • 关于发散的无限项序列之和
  • 智能客服知识库语料格式:从设计原则到工程实践
  • 基于Dify构建企业微信智能客服的实战指南:从架构设计到避坑实践
  • 基于Python的智能客服系统:从架构设计到生产环境部署实战
  • ChatTTS 本地部署实战:从环境配置到性能优化的全流程指南