1. 两数之和 leetcode

链接

1. 两数之和 - 力扣(LeetCode)

题目

代码

解法一(暴力优化版)

python 复制代码
# 输入
nums=list(map(int,input().split()))
target=eval(input())

for i in nums:
    rem=target-i
    if rem in nums:
        print([nums.index(i),nums.index(rem)])
        break
        

特点:​

  1. ​时间复杂度:O(n²)​
    • if rem in nums 是 O(n) 的列表查找,嵌套在循环中,整体 O(n²)。
  2. ​空间复杂度:O(1)​
    • 不需要额外空间。
  3. ​潜在问题​
    • ​重复值错误​ :如 nums = [3, 3], target = 6nums.index(rem) 总是返回第一个 3 的索引,导致输出 [0, 0](错误)。
    • ​低效​:对每个元素都遍历整个数组,数据量大时速度慢。

修-避免使用同样元素

python 复制代码
# 输入
nums=list(map(int,input().split()))
target=eval(input())

for i in range(len(nums)):
    rem=target-nums[i]
    if rem in nums[i+1:]: #
        print([i,nums.index(rem,i+1)]) # 从i+1开始找
        break
        

解法二(哈希表优化版)

python 复制代码
# 输入
nums=list(map(int,input().split()))
target=eval(input())

dic={}
for k,v in enumerate(nums): # k为索引,v为值
    rem=target-v
    if rem in dic:
        print([k,dic[rem]]) 
        # 打印索引,'k'为原数组中的,'dic[rem]'为经字典存储的原数组中的
        break
    dic[v]=k    

特点:​

  1. ​时间复杂度:O(n)​
    • 只需遍历一次数组,利用字典(哈希表)实现 O(1) 的查找。
  2. ​空间复杂度:O(n)​
    • 需要额外存储字典,最坏情况下存所有元素。
  3. ​正确性高​
    • 能正确处理重复值(如 nums = [3, 3], target = 6,输出 [1, 0])。
  4. ​高效查找​
    • dic 存储已遍历的值,避免重复计算。
相关推荐
Codeking__1 天前
Redis的value类型及编码方式介绍——hash
redis·算法·哈希算法
u0104058361 天前
企业微信通讯录同步服务的增量更新与冲突解决算法
算法·企业微信
码农水水1 天前
阿里Java面试被问:RocketMQ的消息轨迹追踪实现
java·开发语言·windows·算法·面试·rocketmq·java-rocketmq
APIshop1 天前
实战解析电商api:1688item_search-按关键字搜索商品数据
开发语言·python
智驱力人工智能1 天前
矿场轨道异物AI监测系统 构建矿山运输安全的智能感知防线 轨道异物检测 基于YOLO的轨道异物识别算法 地铁隧道轨道异物实时预警技术
人工智能·opencv·算法·安全·yolo·边缘计算
就这个丶调调1 天前
Python学习路线全攻略:从入门到精通
人工智能·python·编程入门·学习路线
袁袁袁袁满1 天前
Python爬虫下载PDF文件
爬虫·python·pdf·python爬虫下载pdf文件
叫我:松哥1 天前
基于Flask开发的智能招聘平台,集成了AI匹配引擎、数据预测分析和可视化展示功能
人工智能·后端·python·信息可视化·自然语言处理·flask·推荐算法
橘颂TA1 天前
【剑斩OFFER】算法的暴力美学——leetcode 429 题:N 叉树的层序遍历
算法
"YOUDIG"1 天前
信稿笺纸设计工具:传统排版美学与数字化设计的高效融合
科技·考研·算法·面试·职场和发展·高考