leetcode力扣刷题系列——第一题【两数之和】

news/2024/9/25 11:33:20/

问题:

给定一个整数数组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]


提示:


2 <= nums.length <= 104
-109<= nums[i] <=109
-109 <= target <= 109
只会存在一个有效答案

方法一:

大道至简,一力降十会,暴力手段往往是最不费脑子的,但是也是最浪费时间和资源的一个事情。

class Solution(object):def twoSum(self, nums, target):for i in range(len(nums)):for j in range(len(nums)):if nums[i]+nums[j]==target and i!=j :return [i,j]""":type nums: List[int]:type target: int:rtype: List[int]"""

这是一种非常无脑的做法,采用两次for循环查询得到最终的数组。

方法二:

由于我们已知目标数target,那么我们是不是可以只采用一个for循环结束战斗呢?

我们已知target,再在nums数组中找一个数字进行相减,我们通过查找的方式是不是也能得到最终的答案呢?

class Solution(object):def twoSum(self, nums, target):for i in range(len(nums)):if (target-nums[i]) in nums and i!= nums.index(target-nums[i]):return [i ,nums.index(target-nums[i])]""":type nums: List[int]:type target: int:rtype: List[int]"""

方法三:

前两个方法,其实我们很容易就能想到,那么我们是否有更好的更完美的方法提高我们计算的速度呢?   在我将方法二的答案提交后我发现时间依旧很长并且排名也不算上等水平,但是奈何本人水平有限,并没有想到更好的方法,于是参考了答案,答案给到的方法是采用了哈希表的方法,接下来我把答案放到这里供大家参考。

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hashtable = dict()for i, num in enumerate(nums):if target - num in hashtable:return [hashtable[target - num], i]hashtable[nums[i]] = ireturn []

作者:力扣官方题解
链接:这个是官方链接哦
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


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

相关文章

thinkphp6.0 伪静态失效404(win下)

找到问题点了,是 BtSoft/nginx/conf/php/ 下的 74.conf 问题,是 try_files $uri=404 与 pathinfo 有冲突,将这一行注释后就可以了。 发现 Linux 面板上相关 php 配置没有这个配置,所以是正常的,建议将这一行删除。 location ~ \.php(.*)$ {# try_files $uri=404 与 php 的…

kafka集群架构与原理

前言 这次我们从消息队列开始讨论。生产者-消费者模型中间需要一个消息队列&#xff0c;以存储生产者的产品。对传统的消息队列来说&#xff0c;它支持点对点&#xff08;P2P&#xff09;和发布/订阅&#xff08;Pub/Sub&#xff09;两种消息模型。在点对点模型中&#xff0c;消…

CentOS中使用Docker运行mysql并挂载本地目录

《 CentOS 中安装 Docker 并挂载本地目录》 一、安装 Docker 更新系统软件包&#xff1a; sudo yum update -y安装必要的软件包&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加 Docker 软件源&#xff1a; sudo yum-config-manager --add…

C++——打印以下图案:用string方法。

没注释的源代码 #include <iostream> using namespace std; int main() { string a"*****"; for(int i0;i<5;i) { for(int j0;j<i;j) { cout<<" "; } cout<<a<<…

七层负载均衡和四层负载均衡的区别

文章目录 什么是七层负载均衡&#xff1f;一、定义与工作原理二、优点与缺点三、应用场景四、常见七层负载均衡器五、负载均衡算法 什么是四层负载均衡&#xff1f;一、定义与原理定义&#xff1a;原理&#xff1a; 二、特点与应用场景特点&#xff1a;应用场景&#xff1a; 三…

ddos安全防护怎么选择

在数字化时代&#xff0c;分布式拒绝服务攻击&#xff08;DDoS&#xff09;已成为网络安全领域的一大威胁&#xff0c;它通过控制大量互联网上的计算机或设备&#xff0c;向目标服务器发送海量请求&#xff0c;导致服务器资源耗尽&#xff0c;服务无法正常响应&#xff0c;进而…

WRFDA保姆级安装教程

文章目录 前言基础环境准备Ubuntu20.04子系统安装WSL功能开启与Ubuntu子系统下载Ubuntu用户创建 Ubuntu 20.04 更换国内镜像 相关库及WRFDA安装检验和安装基础包WRF基础环境测试编译器基础环境测试基础库安装zlib安装hdf5安装netcdf4-c 安装netcdf-fortran安装mpich安装安装lib…

【pytorch】relu的实现逻辑

笔者最近在尝试实现AlexNet的底层算子&#xff0c;基于pytorch的框架&#xff0c;本文主要记录一下pytorch中是如何实现relu算子的。 首先最外层是位于torch\nn\modules\activation.py&#xff0c;主要代码如下&#xff1a; __constants__ ["inplace"]inplace: bool…