From 18b7453d2f5aca342afc189d3e60991205c2d7f1 Mon Sep 17 00:00:00 2001 From: kelthuzad_999 Date: Wed, 5 Dec 2018 22:47:48 +0800 Subject: [PATCH 1/2] first pr-kkx --- kaakxixi/sum_two_nums.md | 7 ------- kaakxixi/sum_two_nums.py | 10 ++++++---- 2 files changed, 6 insertions(+), 11 deletions(-) delete mode 100644 kaakxixi/sum_two_nums.md diff --git a/kaakxixi/sum_two_nums.md b/kaakxixi/sum_two_nums.md deleted file mode 100644 index bc5eae3..0000000 --- a/kaakxixi/sum_two_nums.md +++ /dev/null @@ -1,7 +0,0 @@ -算法分析: - -方法1. 整体时间复杂度为O(n^2). 由于python中的list对象实际上是链表,其查询效率为 O(n), 即这里的if 语句if num in nums复杂度为O(n), -再结合列表循环次数n, 整体时间复杂度为O(n^2). - -方法2. 整体时间复杂度为常数级别O(1). 使用散列hash表(python中的dict和set), 将差值target - nums[i]作为dict的键, 索引 i 作为dict的值, 判断列表中的值是否在dict中, 这里对hash表中的元素的访问是常数时间级别. - diff --git a/kaakxixi/sum_two_nums.py b/kaakxixi/sum_two_nums.py index 5aba98f..535d80a 100644 --- a/kaakxixi/sum_two_nums.py +++ b/kaakxixi/sum_two_nums.py @@ -10,6 +10,7 @@ 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] """ +"""方法1是使用list查询差值""" class Solution(object): def twoSum(self, nums, target): """ @@ -23,6 +24,7 @@ def twoSum(self, nums, target): return [i,nums.index(num)] +"""方法2是使用dict查询差值""" def twoSum2(self, nums, target): """ :type nums: List[int] @@ -30,13 +32,13 @@ def twoSum2(self, nums, target): :rtype: List[int] """ #创建一个空字典 - d = {} + dic = {} for i in range(len(nums)): num = target - nums[i] #字典d中存在nums[i]时 - if nums[i] in d: - return d[nums[i]],i + if nums[i] in dic: + return dic[nums[i]],i #否则往字典增加键/值对 else: - d[num] = i + dic[num] = i #边往字典增加键/值对,边与nums[i]进行对比 \ No newline at end of file From 3a95e25fed4c4fdf94eed83a3e9a4dc1b12cb6f2 Mon Sep 17 00:00:00 2001 From: kelthuzad_999 Date: Wed, 5 Dec 2018 22:51:39 +0800 Subject: [PATCH 2/2] first pr-kkx --- kaakxixi/readme.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 kaakxixi/readme.md diff --git a/kaakxixi/readme.md b/kaakxixi/readme.md new file mode 100644 index 0000000..1331f50 --- /dev/null +++ b/kaakxixi/readme.md @@ -0,0 +1,11 @@ +LeetCode 1 两数之和 +2018-12-05 +代码提交地址 https://leetcode-cn.com/problems/two-sum/submissions/ + +算法分析: + +方法1. 整体时间复杂度为O(n^2). 由于python中的list对象实际上是链表,其查询效率为 O(n), 即这里的if 语句if num in nums复杂度为O(n), +再结合列表循环次数n, 整体时间复杂度为O(n^2). + +方法2. 整体时间复杂度为常数级别O(1). 使用散列hash表(python中的dict和set), 将差值target - nums[i]作为dict的键, 索引 i 作为dict的值, 判断列表中的值是否在dict中, 这里对hash表中的元素的访问是常数时间级别. +