两数之和【每日一题】

news/2024/10/30 13:36:47/

前言

※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入刷题模式。若有错误,请多多指教。更多有趣的代码请移步Gitee

👍 点赞  收藏 📝留言 都是我创作的最大的动力!

合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 

目录

1)题目

2)思路分析及其代码

一、暴力求解

二、哈希表

合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 


1)题目

 两数之和 LeetCode HOT 100  

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

输入:nums = [3,2,4], target = 6

输出:[1,2]

输入:nums = [3,3], target = 6

输出:[0,1]

2)思路分析及其代码

一、暴力求解

nums和target如图所示

题目分析

 循环过程

        

 原码

class Solution {public int[] twoSum(int[] nums, int target) {int len = nums.length;for(int i = 0; i < len; i++) {//外层循环,确定第一个加数for(int j = i + 1; j < len; j++){//内层循环,确定第二个加数if(target == nums[i] + nums[j]) {//判断条件return new int[] {i, j};  // 返回的下标放进数组中}}}return new int[] {0};}
}

时间复杂度:O(N^2)  外层循环 + 内层循环。最坏情况是最后两个数是要找的数。每两个数都有匹配一遍。

空间复杂度:O(1) 没有用到额外的空间


 二、哈希表

题目分析

 

过程分析 

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();//创建哈希表for(int i = 0; i < nums.length; i++) {if(map.containsKey(target - nums[i]) ) {//判断是否在哈希表中存在第二个数,由原来的循环变成了判断。//时间复杂度降低,空间复杂度提高。用空间换取时间。return new int[] {map.get(target - nums[i]), i}; //注意返回顺序,i在后面,后返回}map.put(nums[i], i); //将数组的值和下标存放进哈希表。}return new int[] {0};}
}

时间复杂度:O(N)   N是数组中元素的数量,对于每个元素nums[ i ],我们都可用O(1)去找target - nums[ i ]

空间复杂度:O(N)   N是数组中元素的数量,  用于哈希表的开销。


合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 


http://www.ppmy.cn/news/9805.html

相关文章

ThinkPHP使用小技巧之Request封装快捷方法总结

think\Request为一些常用的操作方法封装了函数&#xff0c;便于使用。 可使用request()全局助手函数来获取。TP版本^6.1。 目录 包含如下&#xff1a; 1.获取请求参数 2.获取客户端IP地址 3.当前请求中的port参数 4.获取当前的请求类型&#xff0c;返回大写字符 5.判断请…

使用Sivarc使PLC程序标准化

前言 由于公司最近做的项目都是同样的&#xff0c;并且都采用S7-1500/S7-1200 与G120 系列做为主控系统&#xff0c;所以我一直在思考一个问题&#xff1a;如何标准化并且快速的编程调试。这样可以极大的缩短项目的调试周期&#xff0c;减少公司工程成本&#xff0c;同时也免去…

ATJ2158 LRADC的使用

LRADCLRADC对应引脚LRADC采样电压范围及位数使用LRADC涉及到的驱动文件如何使用不同的LRADC通道LRADC对应引脚 LRADC对应引脚备注LRACDC1WIO0/WIO1LRACDC2GPIO8/GPIO20LRACDC3GPIO9/GPIO21LRACDC4GPIO35LRACDC5GPIO5LRACDC6无没有找到相应的引脚LRACDC7GPIO63 LRADC采样电压范…

从编译到可执行,eBPF 加速容器网络的原理分析 | 龙蜥技术

编者按&#xff1a;eBPF(extended Berkeley Packet Filter) 是一种可以在 Linux 内核中运行用户编写的程序&#xff0c;而不需要修改内核代码或加载内核模块的技术。简单说&#xff0c;eBPF 让 Linux 内核变得可编程化了。本文整理自龙蜥大讲堂第 57 期&#xff0c;浪潮信息 SE…

数据库和SQL介绍

数据库管理系统&#xff08;数据库软件)那么如何实现这种数据库形式的数据管理呢?我们需要借助:数据库管理系统&#xff0c;也就是常说的数据库软件。数据库软件是非常多的&#xff0c;常见的有:这些软件都能实现︰管理库﹑管理表、基于表来管理数据数据库和SQL的关系数据库是…

11 个非常实用的 Python 和 Shell 拿来就用脚本实例!

我工作中用到的几个脚本&#xff0c;主要分为&#xff1a;Python和Shell两个部分。 Python 脚本部分实例&#xff1a;企业微信告警、FTP 客户端、SSH 客户端、Saltstack 客户端、vCenter 客户端、获取域名 ssl 证书过期时间、发送今天的天气预报以及未来的天气趋势图&#xff…

<Python的函数(1)>——《Python》

目录 1. 函数 2. 语法格式 2.1 创建函数/定义函数 ​2.2 调用函数/使用函数 3. 函数参数 4. 函数返回值 5. 变量作用域 后记&#xff1a;●由于作者水平有限&#xff0c;文章难免存在谬误之处&#xff0c;敬请读者斧正&#xff0c;俚语成篇&#xff0c;恳望指教&…

手写RPC框架04-过滤器模块实现

源代码地址&#xff1a;https://github.com/lhj502819/IRpc/tree/v5 系列文章&#xff1a; 注册中心模块实现路由模块实现序列化模块实现过滤器模块实现自定义SPI机制增加框架的扩展性的设计与实现 为什么需要过滤器&#xff1f; 目前整个RPC框架的功能基本已经齐全了&…