算法1--两束求和

devtools/2025/3/24 3:23:39/

题目描述

在这里插入图片描述

解题思路

先说一种很容易想到的暴力解法

暴力解法的思路很简单,就是遍历数组,对于每一个元素,都去遍历数组中剩下的元素,判断是否有两个元素的和等于目标值,如果有,就返回这两个元素的下标。

python">class Solution(object):def twoSum(self, nums, target):for i in range(len(nums)):rest = nums[i+1:]for j in range(len(rest)):if nums[i] + rest[j] == target:return [i, i+j+1]

尝试提交,通过,时间复杂度为O(n^2)

在这里插入图片描述

显然上面的方法不够优雅,再说一种优雅的解法

暴力解法是把每一个数都遍历,然后返回下标,但是这个遍历的过程显然是太过于耗时了,那么我们能不能使用一个数据结构把已经遍历过的数据存储起来,然后往后遍历的时候,求和的时候直接去除先前数据的下标呢?

有的,有的兄弟!我们可以使用字典来存储,当然,你也可以叫他哈希表(HashMap),其实在Python中,这就是字典,为什么叫他哈希表呢,这是因为这个存储思想就是基于操作系统中哈希存储的。

那么我们可以这样来操作:我们遍历所有的数据,以数据的值为键,以它的下标为值,存储到哈希表中,然后每次都判断目标的值和当前所遍历的值的差是否在哈希表中,如果在,直接返回当前数的下标和哈希表中数的下标,否则继续。

开始手搓!

python">class Solution(object):def twoSum(self, nums, target):num_dict = {}for i in range(len(nums)):if target - nums[i] in num_dict.keys():return [i, num_dict[target-nums[i]]]else:num_dict[nums[i]] = i

尝试提交,通过,时间复杂度为O(n)
在这里插入图片描述

总结

可以看到,执行时间从2172ms降到了3ms,效率提升了700倍!自然就变得优雅了。


http://www.ppmy.cn/devtools/169109.html

相关文章

【架构】单体架构 vs 微服务架构:如何选择最适合你的技术方案?

文章目录 ⭐前言⭐一、架构设计的本质差异🌟1、代码与数据结构的对比🌟2、技术栈的灵活性 ⭐二、开发与维护的成本博弈🌟1、开发效率的阶段性差异🌟2、维护成本的隐形陷阱 ⭐三、部署与扩展的实战策略🌟1、部署模式的本…

微服务分层架构详解:表示层、应用层与基础设施层的协同工作

微服务分层架构详解:表示层、应用层与基础设施层的协同工作 文章目录 微服务分层架构详解:表示层、应用层与基础设施层的协同工作1. 表示层(Presentation Layer)1.1 表示层的作用1.2 技术选型1.3 表示层的挑战 2. 应用层&#xff…

python打乱列表顺序

在 Python 中,有多种方法可以打乱列表的顺序。最常用的方法是使用 random 模块中的 shuffle 函数。这个函数会直接在原列表上进行操作,将列表中的元素顺序随机打乱。 以下是一个简单的示例: import random# 创建一个示例列表 my_list [1, …

离线黑客攻击之绕过BIOS/EFI

1. 引言:BIOS/EFI 在数据访问中的作用 在尝试访问一台计算机的数据时,黑客通常不会直接使用设备上已安装的操作系统(通常是 Windows),而是利用外部启动介质(如 Kali Linux) 来绕过系统的安全防护。然而,BIOS/EFI(可扩展固件接口)是黑客面临的第一道屏障,它负责初始…

IDEA使用maven安装外部jar包报错

<dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>18.8</version></dependency> 就一直报错 打印日志执行mvn install:install-file -DfileE:\workSpace\dcs_jz\lib\aspose-words-1…

一个普通的vue权限管理方案-菜单权限控制

渲染左侧菜单 <template><div class"sidebar"><el-menuref"sideMenu"class"sidebar_menu":default-active"activeNav"unique-opened><divclass"sidebar_item"v-for"sidebar in sidebarList"…

算法及数据结构系列 - 树

系列文章目录 算法及数据结构系列 - 二分查找 算法及数据结构系列 - BFS算法 算法及数据结构系列 - 动态规划 算法及数据结构系列 - 双指针 算法及数据结构系列 - 回溯算法 文章目录 树框架树遍历框架N叉树遍历框架 经典题型124.二叉树的最大路径和105.从前序与中序遍历序列构造…

springboot的 nacos 配置获取不到导致启动失败及日志不输出问题

前言 问题 1. 本地启动应用时&#xff0c;一切正常&#xff0c;但是部署 docker 后&#xff0c;会因为获取不到 nacos 中的配置导致服务启动失败。 2.当 docker 中的服务一直重启&#xff0c;可能会突然某一次启动成功&#xff0c;之后只要不重新构建 docker 镜像&#xff0c…