HOT100速成 1.字母异位词分组49. 字母异位词分组 - 力扣LeetCode字母异位词排序后得到的字符串完全相同利用这个特性作为分组的唯一标识。使用HashMapString, ListStringKey 存排序后的字符串Value 存原始字符串列表。class Solution { public ListListString groupAnagrams(String[] strs) { MapString, ListString map new HashMapString, ListString(); for (String str : strs) { char[] array str.toCharArray(); Arrays.sort(array); String key new String(array); ListString list map.getOrDefault(key, new ArrayListString()); list.add(str); map.put(key, list); } return new ArrayListListString(map.values()); } }2.15. 三数之和 - 力扣LeetCode1.排序2.从头开始左右双指针3.大于0剪枝去重4.去重ans.add(Arrays.asList(nums[i], nums[j], nums[k]));3.11. 盛最多水的容器 - 力扣LeetCode左右指针移动小的4.3. 无重复字符的最长子串 - 力扣LeetCode每次把当前加入数组如果字符存在就把滑动窗口移动到下一个位置5.560. 和为 K 的子数组 - 力扣LeetCode前缀和哈希表找k-sum的值一开始加入0,16.53. 最大子数组和 - 力扣LeetCode自立门户委屈加进去动态规划7.56. 合并区间 - 力扣LeetCode按区间起点排序这样重叠的区间一定会相邻遍历每个区间判断它和当前最后一个区间是否重叠重叠就合并更新右端点不重叠就添加新区间8.238. 除了自身以外数组的乘积 - 力扣LeetCode前缀积后缀积开额外数组存9.73. 矩阵置零 - 力扣LeetCode先遍历一次开两个数组记录0的位置再遍历数组置零10.54. 螺旋矩阵 - 力扣LeetCode设置top,bot,left,right逐步收缩11.48. 旋转图像 - 力扣LeetCode设置辅助数组即可12.240. 搜索二维矩阵 II - 力扣LeetCode暴力即可13.200. 岛屿数量 - 力扣LeetCodedfs 遇到边界遇到水退出递归搜索上下左右把他改0主函数遇到1就dfsclass Solution { void dfs(char[][] grid,int r,int c) { int nrgrid.length; int ncgrid[0].length; if(r0|| c0 || rnr || cnc || grid[r][c]0) { return; } grid[r][c]0; dfs(grid,r-1,c); dfs(grid,r1,c); dfs(grid,r,c-1); dfs(grid,r,c1); } public int numIslands(char[][] grid) { if(gridnull||grid.length0) { return 0; } int nrgrid.length; int ncgrid[0].length; int num_islands0; for(int r0;rnr;r) { for(int c0;cnc;c) { if(grid[r][c]1) { num_islands; dfs(grid,r,c); } } } return num_islands; } }14.198. 打家劫舍 - 力扣LeetCode动态规划二维数组打过和没打15.739. 每日温度 - 力扣LeetCode维护一个栈中温度单调递减从栈底到栈顶递减的索引栈当遇到更高温度时弹出所有比它小的温度并计算结果。栈和队列的基本操作StackInteger stack new Stack(); stack.push(1); // 入栈添加元素到栈顶 stack.push(2); stack.push(3); // 栈[1, 2, 3] int top stack.pop(); // 出栈移除并返回栈顶元素 → 3 int peek stack.peek(); // 查看栈顶不移除元素 → 2 int size stack.size(); // 栈的大小 → 2 boolean empty stack.isEmpty(); // 是否为空 → false QueueInteger queue new LinkedList(); queue.offer(1); // 入队添加元素到队尾 queue.offer(2); queue.offer(3); // 队列[1, 2, 3] int head queue.poll(); // 出队移除并返回队头元素 → 1 int peek queue.peek(); // 查看队头不移除元素 → 2 int size queue.size(); // 队列的大小 → 2 boolean empty queue.isEmpty(); // 是否为空 → false16.215. 数组中的第K个最大元素 - 力扣LeetCodePriorityQueueInteger qnew PriorityQueue((a,b)-b-a);大根堆17.347. 前 K 个高频元素 - 力扣LeetCode全文背诵class Solution { public int[] topKFrequent(int[] nums, int k) { HashMapInteger,Integer mapnew HashMap(); for(int i0;inums.length;i) { map.put(nums[i],map.getOrDefault(nums[i],0)1); } PriorityQueueint[] pqnew PriorityQueue((a,b)-(b[1]-a[1])); int[] resnew int[k]; for(var en:map.entrySet() ) { pq.offer(new int[]{en.getKey(),en.getValue()}); } for(int i0;ik;i) { res[i]pq.poll()[0]; } return res; } }hashmap基本操作var en:map.entrySet()getKey(),getValue();HashMapString, Integer map new HashMap(); // 1. put - 添加/更新键值对 map.put(apple, 5); // {apple: 5} map.put(banana, 3); // {apple: 5, banana: 3} map.put(apple, 10); // 更新 apple 的值 → {apple: 10, banana: 3} // 2. get - 获取值不存在返回 null Integer value map.get(apple); // 10 Integer value2 map.get(orange); // null // 3. getOrDefault - 获取值不存在返回默认值 Integer val map.getOrDefault(orange, 0); // 0 // 4. remove - 删除键值对 map.remove(banana); // {apple: 10} // 5. containsKey - 判断键是否存在 boolean hasApple map.containsKey(apple); // true boolean hasOrange map.containsKey(orange); // false // 6. containsValue - 判断值是否存在 boolean hasValue10 map.containsValue(10); // true // 7. size - 获取键值对数量 int size map.size(); // 1 // 8. isEmpty - 判断是否为空 boolean empty map.isEmpty(); // false // 9. clear - 清空所有键值对 map.clear(); // {} // 10. putIfAbsent - 仅当键不存在时插入 map.putIfAbsent(apple, 5); // apple 不存在插入 {apple: 5} map.putIfAbsent(apple, 10); // apple 已存在不更新仍然是 5 //11.遍历全部 for (Map.EntryString, Integer entry : map.entrySet()) { String key entry.getKey(); Integer value entry.getValue(); System.out.println(key : value);18.55. 跳跃游戏 - 力扣LeetCode贪心即可19.45. 跳跃游戏 II - 力扣LeetCode正向遍历记录最大值在到达最大值的时候必须跳

相关新闻

最新新闻

RAG技术面试核心考察点与应对策略

RAG技术面试核心考察点与应对策略

1. RAG技术面试的核心考察点最近在技术社区看到不少同行讨论RAG(检索增强生成)相关的面试经历,发现很多候选人在这个环节表现不佳。作为经历过多次RAG项目实战的老兵,我想分享几个面试官最爱深挖的问题方向。RAG面试的核心考察点通…

2026/8/23 19:56:50
C++可变模板参数:从原理到实战的类型安全编程利器

C++可变模板参数:从原理到实战的类型安全编程利器

1. 从“固定”到“无限”:为什么我们需要可变模板参数? 在C的世界里,函数和类模板的威力在于它们能让我们编写与类型无关的通用代码。但很长一段时间里,这种“通用性”有一个明显的天花板:参数的数量是固定的。你写一个…

2026/8/23 19:56:50
基于Dify工作流构建Markdown转Word自动化服务

基于Dify工作流构建Markdown转Word自动化服务

你有没有遇到过这样的场景:花了半天时间,用 Markdown 精心整理了一份技术文档、项目报告或者 API 说明,格式清晰,结构分明。但当你需要把它交给产品经理、客户或者不熟悉 Markdown 的同事时,对方却要求:“能…

2026/8/23 19:56:50
C++与PPO强化学习实战:从零构建AI角斗士对抗僵尸仿真环境

C++与PPO强化学习实战:从零构建AI角斗士对抗僵尸仿真环境

这次我们来看一个名为“AI角斗士学习对抗僵尸”的项目,它不是一个现成的游戏,而是一个使用C和SFML图形库,结合强化学习(特别是PPO算法)来训练智能体(角斗士)对抗僵尸的仿真环境。项目由Pezzza开…

2026/8/23 19:56:50
嵌入式系统数据存储管理:从介质选型到高可靠架构设计实战

嵌入式系统数据存储管理:从介质选型到高可靠架构设计实战

1. 项目概述:为什么嵌入式系统的数据存储是个“老大难”?干了十几年嵌入式开发,从8位单片机到现在的多核ARM Cortex-A系列,项目做了不下百个。我发现一个挺有意思的现象:很多工程师在项目初期,会把绝大部分…

2026/8/23 19:56:50
整数规划求解利器:分枝定界法核心原理与工程实践详解

整数规划求解利器:分枝定界法核心原理与工程实践详解

1. 项目概述:从“算不完”到“算得巧”的整数规划求解之路 搞数学建模或者运筹优化的朋友,对“整数规划”这四个字一定不陌生。它就像是现实世界决策问题的“标准照”——很多决策变量天然就是整数,比如你要建几个工厂(0或1&#…

2026/8/23 19:51:49