LeetCode-Hot100

哈希

1.两数之和:

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

思路:暴力解法是使用两层循环来遍历每一个数,然后找出两数之和等于target的数,但是这样时间复杂度就是O(n^2)。为了减少时间复杂度,我们可以考虑用空间换时间,考虑使用HashMap。HashMap内部是使用数组来存储数据的,因此他提供O(1)查找效率。我们再遍历数组的时候,同时将元素插入到HashMap中,然后我们检查target减去当前元素后的值再HashMap中是否存在,存在的话说明找到了两个数组元素相加等于target,将这两个元素用一个新的数组保存起来作为最终返回的答案即可。这样做我们只需要遍历一次数组就可以找到结果把时间复杂度降低到O(n)。

import java.util.*;
import java.io.*;
public class Main{public static void main(String args[]){Scanner in = new Scanner(System.in);int n = in.nextInt();int target = in.nextInt();int[] nums = new int[n];for(int i=0;i<n;i++){nums[i] = in.nextInt();}Map<Integer,Integer> map = new HashMap<>();int[] res = new int[2];for(int i=0;i<n;i++){int num = target - nums[i];if(map.containsKey(num)){res[0] = i;res[1] = map.get(num);}map.put(nums[i],i);}System.out.println(Arrays.toString(res));// 对于二维数组或多维数组可以使用Arrays.deepToString()// System.out.println(Arrays.deepToString(res));}
}

2.字母异位词分组

给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。

思路:因为是字母异位词,因为把他们提取出来做个排序,得到的字符串肯定是相等的,因此我们可以利用HashMap的key-value的数据结构,把排序后的字符串作为key,这样遍历到数组中的字符串时,先做个排序,然后查询下HashMap中是否有该字符串,没有的话就创建一个然后加入进去,有的话就直接加入到该key的value中,因为value里面可能存放不止一个字符串,因此构建HashMap的时候valu的结构需要是List<String>,这样遍历一遍之后就一键分类完成了。

import java.util.*;
import java.io.*;public class Main {public static void main(String args[]) {Scanner in = new Scanner(System.in);int n = in.nextInt();in.nextLine(); // 消费掉nextInt后的换行符if(n == 0) {System.out.println(new ArrayList<>());return;}  String[] strs = new String[n];for (int i = 0; i < n; i++) {strs[i] = in.nextLine();}Map<String, List<String>> map = new HashMap<>();for (String s : strs) {char[] c = s.toCharArray();Arrays.sort(c);String sorted = new String(c);// if(!map.containsKey(sorted)){//     map.put(sorted,new ArrayList<>());// }map.putIfAbsent(sorted, new ArrayList<>()); // 更简洁的方式来处理不存在的键map.get(sorted).add(s); // 正确的方法是add} // 直接打印map的values即可,它会自动调用toString()方法System.out.println(new ArrayList<>(map.values()));}
}

持续刷题中...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity的PICO项目基础环境搭建笔记(调试与构建应用篇)

文章目录 前言一、为设备开启开发者模式1、开启PICO VR一体机。前往设置>通用>关于本机>软件版本号2、一直点击 软件版本号 &#xff0c;直到出现 开发者 选项3、进入 开发者模式&#xff0c;打开 USB调试&#xff0c;选择 文件传输 二、实时预览应用场景1、下载PC端的…

Linux中的read命令详解:交互性脚本编写的利器

在Linux系统中&#xff0c;Shell脚本是一种强大的工具&#xff0c;用于自动化任务和编写系统管理脚本。然而&#xff0c;有时候需要脚本能够与用户进行交互&#xff0c;以便动态地获取输入或提供输出。这时&#xff0c;read命令就成为了我们的利器。本文将深入探讨read命令的使…

2024年新手视频剪辑软件推荐-6款视频剪辑软件测评

视频剪辑软件推荐 premiere premiere 直达地址:各大软件网站 说到底,还是得专业的来,虽然很多人觉得他是收费的,但是你懂的,想要免费总是会有办法的.别的不说,剪辑这块,我还是很认可这个软件,虽然我现在还是刚入门. 剪映 剪映 抖音官方推出的一款手机视频编辑剪辑应用,提供切割…

go切片实现原理

近日一直在学习golang,已经产出如下博客一篇 GO闭包实现原理(汇编级讲解) 引言 最近在使用go语言的切片时,出现了一些意料之外的情况,遂查询相关文档学习后写下此篇博客 正文 首先,我们思考,go在通过函数传递一个切片时,是通过引用传递的吗,还是通过值传递的呢(答案将会很…

Transformer之多角度解读

Transformer 文章目录 Transformer  &#x1f449;引言&#x1f48e; 一、 自注意力机制 &#xff1a; 主要用于 长距离依赖捕捉和转换序列二、 Encoder&#xff1a;2.1 多头注意力机制&#xff1a;2.2 残差连接&#xff1a; 三、 Decoder&#xff1a;3.1 Decoder 多头注意力…

hive sql无法停止

排查流程 hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的 其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。 同时&#xff0c;通过JDK动态代理为其织入了synchronized同步机制&#xff1a;其底层是委托给…

申请公众号上限是多少

一般可以申请多少个公众号&#xff1f;公众号申请限额在过去几年内的经历了很多变化。对公众号申请限额进行调整是出于多种原因&#xff0c;确保公众号内容的质量和合规性。企业公众号的申请数量从50个到5个最后到2个&#xff0c;对于新媒体公司来说&#xff0c;这导致做不了公…

swift的lazy关键字 后面还会补充

使用lazy关键字的例子 在Swift 中&#xff0c;如果你在子类的构造器中遇到了“Property self.someProperty not initialized at super.init call”的错误&#xff0c;这表示在调用父类的init方法前&#xff0c;你必须确保所有非可选的实例属性都已经被初始化。Swift 要求所有非…

网络延迟导致终端卡顿

网络延迟导致终端卡顿 在一些情况下&#xff0c;终端卡顿可能是由于网络延迟增加或丢包导致的。例如&#xff0c;使用 hping3 模拟网络流量时可能观察到这种情况。 在使用 hping3 运行前后&#xff0c;通过 ping 命令来观察网络延迟的变化&#xff0c;以便更全面地了解卡顿问…

【XMU学科实践二】豆瓣爬虫实践

文章目录 分析豆瓣阅读网站具体步骤构造headersBeautiful soup中的定位函数find() 、find_all() 完整爬虫代码 叠甲&#xff1a;仅供学习。。 XMU的小朋友实在不会了可以参考我的思路&#xff0c;但还是建议自己敲一遍哈。 学科实践二还是挺有意思的&#xff01; 分析豆瓣阅读网…

什么是jwt

jwt是JSON Web Token&#xff0c;由3部分构成&#xff1a; 头部Header&#xff1a;头部包含了两部分&#xff0c;token 类型和采用的加密算法&#xff08;可为none&#xff0c;后端应限制加密算法&#xff0c;不以这里为准&#xff09;。 载荷Payload&#xff1a;这部分才是重要…

test02

1.逢七过/*朋友聚会时&#xff0c;玩逢7过的游戏 游戏规则&#xff1a;从任意一个数字开始报数&#xff0c;当你要报的数字是包含7或者是7的倍数时都要说&#xff1a;过 需求&#xff1a;使用程序在控制台打印出1-100之间的满足逢七过规则的数据*/ //1.打印1-100 for (int i 1…

Compose UI 之 Small TopAppBar

Small 类型 TopAppBar AppBar 主要由2类&#xff0c;顶部 AppBar 和底部 AppBar。 顶部 AppBar&#xff1a;主要包含了标题&#xff0c;action菜单&#xff0c;导航菜单。底部 AppBar&#xff1a;典型地包含主要导航项。 顶部 AppBar 顶部 AppBar 包含了 4 中类型&#xff…

webhook详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 webhook简介 在当今高度连接的网络世界中,没有什么可以孤立地发挥最佳作用。完成一项任务(几乎)总是需要多个实体的参与。电子商务应用程序需要与支付系统通信,支付…

Python快速入门系列-2(Python的安装与环境设置)

第二章&#xff1a;Python的安装与环境设置 2.1 Python的下载与安装2.1.1 访问Python官网2.1.2 安装Python对于Windows用户对于macOS用户对于Linux用户 2.2 集成开发环境&#xff08;IDE&#xff09;的选择与设置2.2.1 PyCharm2.2.2 Visual Studio Code2.2.3 Jupyter Notebook2…

【操作系统学习笔记】文件管理2.2

【操作系统学习笔记】文件管理2.2 参考书籍: 王道考研 视频地址: Bilibili 文件系统的全局结构&#xff08;布局&#xff09; 外存结构 物理格式化&#xff0c;即低级格式化->划分扇区&#xff0c;检测坏扇区&#xff0c;并用备用扇区替换坏扇区逻辑格式化&#xff0c;即…

初级代码游戏的专栏介绍与文章目录

我的github&#xff1a; codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 一、大型专题 1.1 C嵌入式HTTP服务器 C嵌入式HTTP服务器_初级代码游戏的博…

关于 Rust 的 From 特性的尝试

文章目录 关于Rust的From特性的尝试 关于Rust的From特性的尝试 在The Rust Programming Language一书中&#xff0c;第 9.2 节Recoverable Errors with Result中有如下&#xff1a; For example, we could change the read_username_from_file function in Listing 9-7 to ret…

线性dp+中位数,POJ3666 Making the Grade

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 3666 -- Making the Grade (poj.org) 二、解题报告 1、思路分析 先不考虑…

【MySQL 系列】在 Ubuntu 上安装 MySQL

Ubuntu 是一个使用非常广泛的 Linux 发行版。Ubuntu Server 则是云上最流行的服务器操作系统。本篇文章中&#xff0c;我们展示了在 Ubuntu 上安装 MySQL 8 的详细步骤。 文章目录 1、先决条件2、在 Ubuntu 中安装 MySQL2.1、更新软件仓库包索引2.2、升级本地软件2.3、配置 MyS…