当前位置: 首页 > news >正文

【LeetCode100】--- 1.两数之和【复习回滚】

题目传送门

解法一:暴力枚举(也是最容易想到的) 

class Solution {public int[] twoSum(int[] nums, int target) {int n = nums.length;for(int i = 0; i < n; i++){for(int j = i+1; j<n; j++){if(nums[i] + nums[j] == target){return new int[]{i,j};}}}return new int[]{-1,-1};}
}

注意 初始化 j
int j = i+1
因为j和i不能重复。 

复杂度分析:

时间复杂度:O(N2) 双重循环
空间复杂度:O(1)代码只使用了几个变量 i 、j、n。

解法二:哈希表 (HashMap)
 

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> map = new HashMap<>();int n = nums.length;for(int i = 0; i<n; i++){int x = target-nums[i];if(map.containsKey(x)){return new int[]{map.get(x),i};}map.put(nums[i],i);}return new int[]{-1,-1};}
}

哈希表中
key:记录数组中的数
value:记录数组下标
直接在哈希表中查找  map.containsKey(x)
x = targer-num[ i ]   
若找到了说明此时  x+num[i] = target

找到答案了
返回数组 new int[]{map.get(x),i}
因为此时 i 一定是两个数中靠数组后面的那个数的数组下标
而map.get(x) 就是数组中两数靠前的数组下标

如果没找到就 map.put(nums[i],i);
题目说了会有一组答案的,因此继续在哈希表中找 x = targer-num[ i ] 总会找到答案。

继续循环

复杂度分析

时间复杂度:O(n)一次for循环,最多循环n次。而哈希表查找每次只需要常量次。
空间复杂度:O(n)建立了哈希表,最快情况 数组中 n-1 个数全部添加进来

http://www.dtcms.com/a/272232.html

相关文章:

  • 氢能源杂谈
  • 深入拆解Spring核心思想之一:IoC
  • 天津医大用网络药理学+分子对接发表中科院二区IF5
  • 【Python】基于Python提取图片验证码
  • SYM32第二十天 ESP8266-01S和电脑实现串口通信(3)
  • 羊肚菌自动采收车设计cad【7张】+三维图+设计说明书
  • 电脑息屏工具,一键黑屏超方便
  • 双esp8266-01之间UDP透传传输,自定义协议
  • LlamaFactory Demo
  • 使用langchain连接llama.cpp部署的本地deepseek大模型开发简单的LLM应用
  • CTFHub————Web{信息泄露[备份文件下载(vim缓存、.DS_Store)]}
  • turbopack打包机制
  • SQL的初步学习(一)(以MySQL为例)
  • 重置 Rust 工具链​
  • 缺乏项目进度对比历史数据,如何建立进度基线
  • 深度学习_全连接神经网络
  • UE5多人MOBA+GAS 17、制作小兵的动画蓝图、攻击GA以及死亡和复活的AI感知开关
  • Ajax之核心语法详解
  • Vue Vue-route (4)
  • Ubuntu基础(Python虚拟环境和Vue)
  • 堆的应用(讲解超详细)
  • Uniapp中的uni.scss
  • 2025.07.09华为机考真题解析-第一题100分
  • 【VLAs篇】05:RDT模型结构和流程分析
  • HTML颜色定义
  • 深入了解Modbus TCP:工业通信的“通用语言”
  • Docker-构建镜像并实现LNMP架构
  • C语言 | 函数核心机制深度解构:从底层架构到工程化实践
  • 西电考研录取:哪些省份考研上岸西电更容易?
  • PyTorch Tensor 的创建与操作入门