简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。
一、说在前面
昨天和今天的讨论中我们(由于中秋佳节之际,这次群内只有我和两位学长讨论)优化算法的点主要是在:数据结构上,也就是,到底用什么数据结构存储数据,遍历最快?
我们常见的几种数据结构:列表、元组、字典、枚举,在上一篇推文[【边学边敲边记】LeetCode001:两数之和]中我们已经使用了列表、字典作为存储载体,结果是字典遍历要快很多,今天我将介绍另外两种数据存储结构的执行效果。
二、实现
- 元组数据结构
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ l = len(nums) tuple_nums = tuple(nums) for a in range(l): one_unm = tuple_nums[a] other_one = target - one_unm if other_one in tuple_nums: b = tuple_nums.index(other_one) if a!= b: return [a,b] nums = [3, 3, 1, 2] target = 6 test_o = Solution() result = test_o.twoSum(nums,target) print(result)
- 提交结果
提交结果
测试数据:29组
运行时间:888ms
击败人百分比:64.24%
- 枚举数据结构
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ nums_hash = {} for index,number in enumerate(nums): one_num = nums[index] other_num = target-one_num if other_num in nums_hash: return [nums_hash[other_num],index] nums_hash[number] = index return []
- 提交结果
提交结果
测试数据:29组
运行时间:28ms
击败人百分比:98.70%