LeetCode Hot100(持续更新中)

devtools/2025/2/13 15:04:45/

一、哈希

(一)两数之和

思路一:传统方法-双层循环遍历
时间复杂度:O(n^2)

空间复杂度:O(1)

class Solution {public int[] twoSum(int[] nums, int target) {// 两层循环求解 时间复杂度O(N^2) 空间复杂度O(1)int[] goal = new int[2];for (int i = 0; i < nums.length - 1; i++) {for (int j = i+1; j < nums.length; j++) {if ( (nums[i] + nums[j]) == target ) {goal[0] = i;goal[1] = j;return goal;}}}throw new IllegalArgumentException("no such two nums.");}
}

思路二:HashMap方法-一次遍历
时间复杂度:O(n)

空间复杂度:O(n)

class Solution {public int[] twoSum(int[] nums, int target) {// HashMap求解 时间复杂度O(N) 空间复杂度O(N)Map<Integer, Integer> numsMap = new HashMap();numsMap.put(nums[0], 0);for (int i = 1; i < nums.length; i++) {// 计算当前值距离目标值的补数int complement = target - nums[i];// 查看当前补数是否存在numsMap中if (numsMap.containsKey(complement)) {return new int[] { numsMap.get(complement), i};}// 不存在,将当前值加入numsMap中numsMap.put(nums[i], i);}throw new IllegalArgumentException("未找到符合要求的两个下标");}
}

(二)字母异位词分组

思路:采用哈希+排序

时间复杂度:O(N*M log M)  N为字符串数组长度,M为字符串长度

空间复杂度:O(N*M)

class Solution {public List<List<String>> groupAnagrams(String[] strs) {// 字母异位词分组// 时间复杂度 O(N*MlogM)  N为字符串数组长度,M为字符串长度// 空间复杂度 O(N*M) // 创建一个HashMap,键存储排序后的字符串,值存储字母异位词Map<String, List<String>> anagramMap = new HashMap<>();// 遍历字符串数组for (String str : strs) {// 对字符串重新进行排序char[] chars = str.toCharArray();Arrays.sort(chars);String sortedStr = new String(chars);// 如果哈希表不存在该字符串,则添加if ( !anagramMap.containsKey(sortedStr) ) {// 哈希表新增anagramMap.put(sortedStr, new ArrayList<>());}// 哈希表value赋值anagramMap.get(sortedStr).add(str);}return new ArrayList<>(anagramMap.values());}
}


http://www.ppmy.cn/devtools/158510.html

相关文章

Flink-DataStream API

一、什么样的数据可以用于流式传输 Flink的DataStream API 允许流式传输他们可以序列化的任何内容。Flink自己的序列化程序用于 基本类型&#xff1a;即字符串、长、整数、布尔值、数组复合类型&#xff1a;元组、POJO和Scala样例类 基本类型我们已经很熟悉了&#xff0c;下…

linux 内核结构基础

linux 内核对象基础 1.linux 的 kobj(struct kobject) 类2.linux 中的 kset3. linux 下的 ktype (kobj_type 类)4. kobj 的使用理解 1.linux 的 kobj(struct kobject) 类 kobj 是 linux 下的高级抽象类定义&#xff0c;用于派生所有其余的类定义,比如设备类定义struct device.…

川翔云电脑是什么?租电脑?

在数字化时代&#xff0c;川翔云电脑借助云计算技术&#xff0c;把用户终端和云端虚拟电脑连接&#xff0c;打破本地硬件的局限&#xff0c;让大家随时随地工作、娱乐。 川翔云电脑的优势 强大硬件配置 川翔云电脑硬件配置处于行业前列&#xff0c;显卡尤为突出。它配备性能…

Kafka 读写示例

一、概述 Kafka 是一款流行的分布式消息队列系统,具有高吞吐量、可扩展性和持久性等优点。本文将介绍如何使用 Kafka 进行消息的生产和消费。 二、Kafka 生产者 1. 生产者配置 以下是一些常用的 Kafka 生产者配置参数: 参数描述bootstrap.serversKafka 集群的地址,用于生…

第二章:13.1 机器学习的迭代发展

目录 机器学习模型开发流程 构建电子邮件垃圾邮件分类器示例 总结 垃圾邮件分类示例 构建垃圾邮件分类器 机器学习模型开发流程 确定系统架构&#xff1a; 首先&#xff0c;需要决定机器学习系统的总体架构&#xff0c;这包括选择合适的模型、确定使用的数据集、可能还包括…

工具-screen-管理终端会话(服务器长时间运行任务)

screen 是一个用于管理多个终端会话的实用工具&#xff0c;常用于在单个终端窗口中运行多个虚拟终端。它允许用户在一个终端窗口中分离和重新连接会话&#xff0c;非常适合在远程服务器上工作或长时间运行任务时使用。 主要功能 1.会话管理&#xff1a; 可以创建多个虚拟终端…

蓝桥杯算法日记|贪心、双指针

3412 545 2928 2128 贪心学习总结&#xff1a; 1、一般经常用到sort&#xff08;a&#xff0c;an&#xff09;&#xff1b;【a[n]】排序&#xff0c;可以给整数排&#xff0c;也可以给字符串按照字典序排序 2、每次选最优 双指针 有序数组、字符串、二分查找、数字之和、反转字…

996引擎-问题处理:三职业改单职业

996引擎-问题处理:三职业改单职业 问题解决方案顺便补充点单性别设置补充:可视化配置表参考资料问题 目前的版本: 引擎版本号:2024.8.7.0 三端配套客户端:3.40.9 传统PC客户端:23.12.07 配套数据库:64_24.8.7.0此版本需要通过可视化配置表