LeetCode 1.

问题描述

俩数之和:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]

原因分析:

想法一:使用俩次循环遍历。但是时间复杂度太高O(n^2)

class Solution {public int[] twoSum(int[] nums, int target) {for(int i = 0; i < nums.length;i++){for(int j = i+1; j < nums.length; j++){if(nums[i]+nums[j]==target)return new int[]{i,j};}}}
}
class Solution {public int[] twoSum(int[] nums, int target) {// 外层循环遍历每个元素(除了最后一个)for (int i = 0; i < nums.length - 1; i++) {// 内层循环遍历当前元素之后的所有元素for (int j = i + 1; j < nums.length; j++) {// 检查两数之和是否等于目标值if (nums[i] + nums[j] == target) {// 找到解,立即返回索引对return new int[]{i, j};}}}// 理论上不会执行到这里(题目保证有解)return new int[0]; // 保证编译通过}
}

解决方案:

遇到判断这个元素是否在集合里出现过的时候(哈希表法):里面有俩种结构(数组与Set)做哈希映射

import java.util.HashMap;
class Solution {public int[] twoSum(int[] nums, int target) {// 创建哈希表:键=数组元素值(Integer), 值=元素索引(Integer)HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) {// 计算需要的补数(配对值)int complement = target - nums[i];// 检查补数是否已在哈希表中(使用内置方法)if (map.containsKey(complement)) {// 找到解:返回[补数的索引, 当前索引]return new int[]{map.get(complement), i};}         // 将当前元素存入哈希表(使用内置方法)map.put(nums[i], i);}    // 无解时返回空数组(实际不会执行)return new int[0]; // 创建新的空数组对象}
}
二、Set 与 Map 的关系与区别
1. Map(映射):键值对集合

核心特征

  • 存储键值对(Key-Value pairs)
  • 键唯一,值可重复
  • 通过键快速检索值
// Java HashMap 示例
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);  // 插入键值对
int count = map.get("apple");  // 通过键获取值
2. Set(集合):唯一元素容器

核心特征

  • 存储不重复的元素
  • 本质是键的集合(值被忽略)
  • 基于 Map 实现(值用固定占位对象)
// Java HashSet 源码(简化版)
public class HashSet<E> {private transient HashMap<E, Object> map;private static final Object PRESENT = new Object();    public boolean add(E e) {return map.put(e, PRESENT) == null; // 值固定}
}
使用选择建议
  • 需存储关联数据 → Map
    // 用户ID到名字的映射
    Map<Integer, String> userNames = new HashMap<>();
    
  • 只需检查元素存在性 → Set
    // 黑名单ID检查
    Set<Integer> blacklist = new HashSet<>();
    
三、自动拆箱与装箱

由包装类转成基本类型(如integer与int)在java5之后可以自动转换。Java 集合框架(如 HashMap)只能存储对象,所以使用包装类。
使用包装类好处:
1.可以为null值
2.有额外的扩展方法

四、为什么要使用泛型

泛型 <K,V> 指定键值对的类型 保证类型安全,避免类型转换

五、为什么要返回一个数组前要加new

new = 拿新盒子:创建数组就像拿新盒子装东西,空盒子也需要拿(new)

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

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

相关文章

c练习-c基础

#include <stdio.h>int main() {//打印数组中的最大值int arr[10];int max,i;for (i 0; i < 10; i){scanf_s("%d", &arr[i]);}max arr[0];for (i 0; i < 10; i){if(max < arr[i 1]){max arr[i 1];}}printf("数组中最大值&#xff1a;%…

Numpy科学计算(五分钟小白从入门到精通)

2.1 numpy介绍numpy是Python中科学计算的基础包。它是一个Python库&#xff0c;提供多维数组对象、各种派生对象&#xff08;例如掩码数组和矩阵&#xff09;以及用于对数组进行快速操作的各种方法&#xff0c;包括数学、逻辑、形状操作、排序、选择、I/O 、离散傅里叶变换、基…

从零掌握微服务通信安全:mTLS全解析

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 在云原生时代&#xff0c;微服务架构的普及带来了灵活性和可扩展性&#xff0c;但也让服务间通信的安全性成为核心挑战。mTLS&#xff08;Mutual TLS&…

Node.js net.Socket.destroy()深入解析

socket.destroy() 是 Node.js net 模块中用于强制销毁 TCP 套接字的方法&#xff0c;比 socket.end() 更彻底。下面我将从多个方面全面讲解这个方法。 基本用法 const net require(net);const server net.createServer((socket) > {// 强制销毁套接字socket.destroy(); })…

vmware 克隆虚拟机,报错:克隆时出错:指定不存在的设备。然后电脑卡死,只能强制关机再开机。

vmware 克隆虚拟机&#xff0c;报错&#xff1a;克隆时出错:指定不存在的设备。然后电脑卡死&#xff0c;只能强制关机再开机。1、问题描述2、问题原因3、解决方法1、问题描述 vmware 版本&#xff1a;vmware workstation pro 17.6.3 克隆虚拟机时&#xff0c;创建完整克隆&am…

如何使用Python将任意PPT变为“智能模板”(解决 python-pptx 替换元素无法保留格式的问题,阴影、填充等属性保留!)

文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 深入 OpenXML:格式保留的终极武器 📒 🚀 如何打造你自己的“格式保留”PPT模板? 🧐 为什么格式会丢失? 🖼️ 方案一:图片的“格式移植”大法 🛠️ 实现代码 🔹 原理解析 ✍️ 方案二:文本的“外科手术”大法…

学习python中离线安装pip及下载package的方法

正常而言&#xff0c;Python 3.4及以上版本默认自带pip工具‌&#xff0c;无需额外安装&#xff0c;如果需要单独离线安装pip&#xff0c;可以先使用DeepSeek查看指定操作系统能安装的最高pip版本&#xff0c;然后在参考文献1中现在指定版本的pip离线安装文件&#xff0c;通常为…

liunx运维进阶脚本

一、文件与目录操作1.快速创建目录树mkdir -p project/{src,doc,test/{unit,integration}}创建嵌套目录结构&#xff0c;避免逐层创建。2查找并删除7天前的日志文件find /var/log -name "*.log" -mtime 7 -exec rm -f {} \;结合find和exec实现定时清理。3.批量重命名…

Apache Ignite 中的 SQL 模式(Schema)管理机制

这段内容讲的是 Apache Ignite 中的 SQL 模式&#xff08;Schema&#xff09;管理机制。我们可以从几个方面来理解&#xff1a; 一、什么是 Schema&#xff08;模式&#xff09;&#xff1f; 在 SQL 中&#xff0c;Schema 是数据库对象&#xff08;如表、视图等&#xff09;的…

分布式光伏发电多合一(也称为五合一或者群调群控)终端,从功能、市场前景等等方面介绍

对于当下分布式光伏从业者&#xff0c;多合一终端经常被提及到。而且很多地区也有正常使用&#xff0c;目前来看&#xff0c;使用效果也是比较好的&#xff0c;满足当下的使用要求。并且价格也是可以接受。下面从几个方面简单介绍一下。功能介绍 5G通信功能 设备内置 5G通信模组…

AWE2026启动:加码AI科技,双展区联动开启产业新格局

7月22日&#xff0c;由中国家用电器协会主办的2026年中国家电及消费电子博览会&#xff08;AWE2026&#xff09;启动发布会在上海举行。据「TMT星球」了解&#xff0c;AWE2026将以“AI科技、慧享未来”为主题&#xff0c;首次启用“一展双区”的新模式&#xff0c;于2026年3月1…

Django基础(六)———数据库

前言上篇文章给大家介绍了DTL模板结构这篇文章将讲述Django框架与MySQL数据库的综合使用一、Django配置连接数据库在操作数据库之前&#xff0c;首先先要连接数据库&#xff0c;这里我们以配置MySQL为例来讲解。Diango连接数据库&#xff0c;不需要单独的创建一个连接对象。 只…

postgresql使用记录 SCRAM authentication requires libpq version 10 or above

文章目录 背景 如何用命令行连接数据库 报错 原因 解决方案 psql常见命令 🔍 **核心数据库操作命令** 1. **查看所有数据库** 2. **切换数据库** 3. **查看表及结构** 4. **执行 SQL 文件** 5. **退出 psql** ⚙️ **高级管理命令** ️ **注意事项** 背景 由于某种原因,无法…

2.0版本seata、nacos+ruoyi(微服务)配置

一、下载&#xff1a; seata下载&#xff1a;点击这里 nacos下载&#xff1a;点击这里 ruoyi&#xff08;微服务&#xff09;下载&#xff1a;点击这里 Git bash下载&#xff1a;点击这里 本文所用的版本&#xff1a; seata-2.2.0&#xff08;下图红色框框&#xff09;&a…

面试高频题 力扣 LCR 130.衣柜整理 洪水灌溉(FloodFill) 深度优先遍历(dfs) 暴力搜索 C++解题思路 每日一题

目录零、题目描述一、为什么这道题值得一看&#xff1f;二、题目拆解&#xff1a;核心要素与约束三、算法实现&#xff1a;基于 DFS 的解决方案代码逻辑拆解五、时间复杂度与空间复杂度时间复杂度空间复杂度六、坑点总结七、举一反三八、洪水灌溉&#xff08;Flood Fill&#x…

Ext4文件系统全景解析

目录Ext4文件系统全景解析&#xff1a;从inode到数据恢复实战1. Ext文件系统的"小区规划"&#xff1a;块组结构详解 &#x1f3d8;️1.1 块组&#xff1a;文件系统的基本管理单元1.2 超级块的"多重备份"机制 &#x1f6e1;️2. inode&#xff1a;文件的&qu…

贪心算法Day4学习心得

先来看第一道&#xff1a;860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 有如下三种情况&#xff1a; 情况一&#xff1a;账单是5&#xff0c;直接收下。情况二&#xff1a;账单是10&#xff0c;消耗一个5&#xff0c;增加一个10情况三&#xff1a;账单是20&#…

接口自动化测试种涉及到接口依赖怎么办?

《接口自动化测试中接口依赖的处理方式及选择原则》在接口自动化测试中&#xff0c;接口依赖是指某个接口的请求参数、执行条件或测试结果依赖于其他接口的输出&#xff08;如返回数据、状态等&#xff09;。处理接口依赖是确保测试用例准确性和稳定性的关键&#xff0c;常见的…

hive分区表临时加载日批数据文件

源系统每日上传一个csv数据文件到数据中台指定目录&#xff0c;数据中台用hive表进行ETL工作。 先建一个外部分区表&#xff1a; create external table tmp_lease_contract ( contract_id string, vin string, amount float ) partitioned by (dt string) row format delim…

Python关于pandas的基础知识

一.扫盲&#xff08;一&#xff09;、pandas 是什么pandas 是 Python 的一个第三方数据处理库&#xff0c;它提供了高效、灵活的数据结构&#xff08;如 Series 和 DataFrame&#xff09;&#xff0c;能方便地对结构化数据进行清洗、转换、分析和处理。&#xff08;二&#xff…