P1三数之和,难度中等,相关标签为数组、双指针。
题目
1 | 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 |
LeetCode题目链接https://leetcode-cn.com/problems/3sum/
解题思路
暴力解法三重循环
1 | from collections import Counter |
输出:
1 | [[-1, -1, 2], [-1, 0, 1]] |
时间复杂度为
$$
O(n^3)
$$
哈希表
1 | class Solution: |
输出:
1 | [[-1, -1, 2], [-1, 0, 1]] |
时间复杂度为
$$
O(n^2)
$$
积累
- enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
1 | enumerate(sequence, [start=0]) |
seasons = [‘Spring’, ‘Summer’, ‘Fall’, ‘Winter’]
list(enumerate(seasons))
[(0, ‘Spring’), (1, ‘Summer’), (2, ‘Fall’), (3, ‘Winter’)]list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, ‘Spring’), (2, ‘Summer’), (3, ‘Fall’), (4, ‘Winter’)]
class collections.Counter([iterable-or-mapping])
Counter 集成于 dict 类,因此也可以使用字典的方法,此类返回一个以元素为 key 、元素个数为 value 的 Counter 对象集合。
from collections import Counter
s = “hello pinsily”
d = Counter(s)d
Counter({‘l’: 3, ‘i’: 2, ‘h’: 1, ‘e’: 1, ‘o’: 1, ‘ ‘: 1, ‘p’: 1, ‘n’: 1, ‘s’: 1, ‘y’: 1})
发布时间: 2019-08-20
最后更新: 2019-12-21
本文链接: https://juoyo.github.io/posts/c415b63f.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!