Two Sum

2018-03-26  本文已影响0人  3bd9251f5e09

题目

Two Sum

分析

  1. 数组没说是有序的
  2. 乍一看只有O(N^2)的算法。
  3. 不能进行排序,会破坏索引值。
  4. 数组中的元素会重复(样例中有[3,3]这个数据)

Python语法

  1. 排序
    list.sort()会改变list本身
    sorted(list)不改变list本身,形成一个新的list
  2. 同时获取List的值与索引
list = [2, 7, 5, 9]
for index, item in enumerate(list):
    print(index, item)
  1. List添加元素
a = [1,2,3]
b = [3,4,5]
a.append(b)
print(a)
# [1, 2, 3, [3, 4, 5]]
a = [1,2,3]
b = [3,4,5]
# a.append(b)
a.extend(b)
print(a)
# [1, 2, 3, 3, 4, 5]

代码

我的代码

直接双重循环,时间复杂度N^2

哈希表

def twoSum(nums, target):
    '''
    for index_i, i in enumerate(nums):
        # print(index_i, i)
        for index_j, j in enumerate(nums):
            if i + j == target and index_i != index_j:
                l = []
                l.append(index_i)
                l.append(index_j)
                return l
    '''
    dict = {}
    l = []
    for index, i in enumerate(nums):
        dict[i] = index
    for index,i in enumerate(nums):
        number = target - i
        if number in dict.keys() and dict[number] != index:
            l.append(index)
            l.append(dict[number])
            return l

L = [3,2,4,5,6,7,8]
print(twoSum(L, 6))
上一篇 下一篇

猜你喜欢

热点阅读