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表。

相关推荐
nunca_te_rindas2 小时前
算法刷体小结汇总(C/C++)20260328
c语言·c++·算法
Sunshine for you2 小时前
高性能压缩库实现
开发语言·c++·算法
Sunshine for you2 小时前
C++中的表达式模板
开发语言·c++·算法
qwehjk20082 小时前
C++中的状态模式
开发语言·c++·算法
Fortune792 小时前
自定义类型转换机制
开发语言·c++·算法
nunca_te_rindas2 小时前
递归实现排列型枚举题目例题
算法
2301_814590252 小时前
实时音频处理C++实现
开发语言·c++·算法
Lisssaa2 小时前
打卡第二十八天
数据结构·算法
小此方2 小时前
算法实战论01(双指针篇一):双指针的核心思想与应用场景总结
c++·算法·力扣