LeetCode热题100-两数之和

Python3实现:

  • 暴力解法:时间复杂度n2,空间复杂度1
python 复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        if not nums and len(nums) > 2:
            raise Exception("输入数据格式有误!")
        length = len(nums)
        for i, num in enumerate(nums):
            for j in  range(i + 1, length):
                if nums[i] + nums[j] == target:
                    return [i, j]
        return []

关注点:range为左闭右开,enumerate可以设定索引开始值。

  • hash方法:时间复杂度n,空间复杂度n
python 复制代码
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        if not nums and len(nums) > 2:
            raise Exception("输入数据格式有误!")
        des_dict = {}
        for i in range(len(nums)):
            dif = target - nums[i]
            if dif in des_dict.keys():
                return [des_dict[dif], i]
            des_dict[nums[i]] = i
        return []   

这种算是哈希表的变形实现,使用了字典当作hash表。

相关推荐
RisunJan1 小时前
uni-app 面试知识点梳理
面试·职场和发展·uni-app
裕晟资质规划10 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
en.en..12 小时前
C语言 标准输入 / 输出缓冲区
算法
吃好睡好便好13 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球13 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
靠沿15 小时前
贪心算法专题(二)
算法·贪心算法
猎头南楼15 小时前
具身智能模型部署方向的能力要求与技术栈梳理
人工智能·深度学习·算法
啥都想学点的研究生16 小时前
一篇文章讲清楚:线性回归问题的求解——正规方程法
算法·机器学习·线性回归
青少儿编程课堂16 小时前
树状数组精讲:逆序对计数与离散化(附双语言解法)
算法·树状数组·离散化·信息学奥赛·逆序对
血小板要健康17 小时前
网格 dfs 与 FloodFill:从岛屿、区域到搜索路径
笔记·算法·leetcode·深度优先