LeetCode-Hot100

news2025/2/28 17:19:54

哈希

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.coloradmin.cn/o/1504395.html

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

相关文章

考研复试要想顺利通关,务必掌握的一些问题

亲爱的学弟学妹们&#xff0c;大家好&#xff01; 我是研一的学姐&#xff0c;深知考研路上的艰辛与不易。如今&#xff0c;为了回馈广大考研学子&#xff0c;我决定将自己精心整理的考研复试资料拿出来与大家分享&#xff0c;希望能为你们的复试之路添砖加瓦&#xff0c;助你…

202109 CSP认证 | 脉冲神经网络

3. 脉冲神经网络 好久之前第一次写的时候完全对第三题没感觉&#xff0c;提交上去得了个0 分… 这次自己再写了一遍&#xff0c;花的时间不多&#xff0c;写的时候感觉逻辑也不是特别难。最后是超时了&#xff0c;感觉第三题开始涉及到优化了&#xff0c;不仅仅是暴力模拟就可以…

阿里云服务器“地域”是啥?咋选合适?

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

市场情绪主升周期的分歧产生核心节点剖析

昨天下午我在群里分享了核心一些观点&#xff1a; 理解市场&#xff0c;划分情绪周期阶段&#xff0c;本质还是理解&#xff0c;观察驱动市场先手资金的动向。 亏钱可以说是因为我们带有个人偏见导致的&#xff0c;进一步说是因为我们偏离了市场资金共识导致的&#xff0c;可能…

java016 - Java多态

1、概述 同一个对象&#xff0c;不同的时刻&#xff0c;表现出来不同的形态。 2、多态成员的访问特点 成员变量&#xff1a;编译看左边&#xff0c;执行看左边。 3、多态的优缺点 代码&#xff1a; 动物类&#xff1a; 猫类&#xff1a; 操作类&#xff1a; 测试1类&#x…

第五十四回 高太尉大兴三路兵 呼延灼摆布连环马-AI通过构建并训练CNN网络来进行飞机识别

呼延灼举荐了百胜将韩滔和天目将彭玘做先锋。 两军对战&#xff0c;韩滔和秦明斗二十回合&#xff0c;呼延灼与林冲斗在一起&#xff0c;花荣与彭玘斗在一处&#xff0c;后彭玘与一丈青扈三娘斗在一起&#xff0c;被扈三娘抓住。 尽管梁山占优&#xff0c;宋江也没有乘胜追击&…

【Linux】Linux——Centos7安装

目录 虚拟机安装【空壳子】安装VMware Workstation新建虚拟机硬件兼容性(直接下一步)稍后安装操作系统客户及操作系统选择Linux&#xff0c;版本Centos764位给虚拟机命名&#xff0c;并选择安装位置处理器配置&#xff08;默认即可&#xff0c;不够用后面可以调&#xff09;虚拟…

Spring bean的生命周期图解(转)

转载自&#xff1a; 生命周期详解

安装nginx:手动安装和yum安装

本文在centos7.9下分别尝试了yum安装和手动安装&#xff0c;记录一下试验过程。为后来者少踩点坑。 下载 下载地址&#xff1a;链接 。建议下载稳定版本&#xff0c;也就是Stable Version&#xff0c;这里下载的是 nginx-1.24.0 # 我下载在如下文件夹 mkdir/opt/apps cd /op…

美食网页成品 HTML美食网页设计制作 前端美食网页开发 热门美食特产网页制作中国传统特色小吃-臭豆腐 6页面 美食主题 HTML5 带设计说明

美食网页成品 HTML美食网页设计制作 前端美食网页开发 热门美食特产网页制作 中国传统特色小吃-臭豆腐 6页面 美食主题 HTML5 带设计说明 http://www.yuanle.net.cn/anli/30/4138.html

【附教程】2024,人工智能+AI绘画,看这里就够了~14款主流图像生成软件工具总有一个适合你

AI绘画技术通过深度学习和处理海量图像数据&#xff0c;能够迅速将文字描述转化为富有创意和艺术性的画作。这一技术不仅极大地提升了艺术家的创作效率和作品质量&#xff0c;还为他们提供了全新的灵感来源和创作方式&#xff0c;推动了艺术领域的创新与发展。 同时&#xff0…

Java高频面试之基础篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 解释下什么是面向对象&#xff1f;面向对象和面向过程的区别&#xff1f; 面向对象的三大特性&#xff1f;分别解释下&#xff1f; 封装 继承 多态 JDK、JRE、JVM 三者之间的关系&#xff1f; JVM…

AI代码提示工具

1. 介绍 之前一直用国外的Github copilar代码指示工具&#xff0c;写代码效率提高了30%-50%&#xff0c;但是这个工具需要付费而且有时候出现连接问题&#xff0c;后来发现国内也有一款相同的代码只能提示工具&#xff0c;我们只需要在Vscode或者JetBrains里面安装这个插件&am…

Python 创建PPT

本篇为如何使用Python来创建ppt文件。 创建PPT 安装必要的库 命令如下&#xff1a; pip install python-pptx 安装过程&#xff1a; 创建ppt文件 在当前目录下创建一个test的ppt文件。其中包含两页&#xff0c;分别使用了不同的布局。 第一页设置了标题和内容。第二页只设…

flink重温笔记(十三): flink 高级特性和新特性(2)——ProcessFunction API 和 双流 join

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 13 天啦&#xff01;学习了 flink 高级特性和新特性之ProcessFunction API 和 双流 join&#xff0c;主要是解决大数据领域数据从数据增量聚合的问题&#xff0c;以及快速变化中的流数据拉宽问题&#xff0c;即变化中多个…

使用51单片机控制lcd1602字体显示

部分效果图&#xff1a; 准备工作&#xff1a; 51单片机&#xff08;BST&#xff09;1602显示屏 基础知识&#xff1a; 注&#xff1a;X表示可以是0&#xff0c;也可以是1&#xff1b; DL 1&#xff0c; N 1&#xff0c; F 0&#xff0c; 代码一&#xff1a; 要求显示字母…

【力扣白嫖日记】1164.指定日期的产品价格

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1164.指定日期的铲平价格 表&#xff1a;Products 列名类型product_idintnew_priceintchange_datedate (pr…

如何进入Windows 11的安全模式?这里提供详细步骤

序言 如果你在启动Windows 11 PC时遇到问题,则重新启动到安全模式可能会有所帮助,该模式会暂时禁用驱动程序和功能,以使你的PC更稳定。下面是如何做到这一点。 在Windows 7和更早版本中,通常可以在打开电脑后按功能键(如F8)启动安全模式。Microsoft从Windows 8中删除了…

CSS3基础2

CSS3 用户界面 resize 示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

基于Spring Boot+Vue的论坛网站

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…