数组
实现一个支持动态扩容的数组
参考:python实现动态数组
1 | # coding:utf-8 |
实现一个大小固定的有序数组,支持动态增删改操作
需要注意数组始终有序,在下方代码中默认升序
1 | # coding:utf-8 |
实现两个有序数组合并为一个有序数组
方法一
return sorted(list1+list2)
,先合并再排序
方法二
使用一种比较朴素的方法来合并:遍历2个数组,将较小的数插入list
1 | # coding:utf-8 |
哈希表
学习哈希表思想,并完成leetcode上的两数之和(1)及Happy Number(202)!(要求全部用哈希思想实现!)
哈希表可简单理解为k-v,在python中,哈希表可用dict表示
leetcode-1-两数之和
代码见:leetcode-1-两数之和 中”方法二”,使用dict记录当前元素下标和匹配的值
LeetCode-202-快乐数Happy Number
使用dict记录求过的数
1 | class Solution(object): |
对应的 LeetCode 练习题
Three Sum(求三数之和)
英文版:https://leetcode.com/problems/3sum/
中文版:https://leetcode-cn.com/problems/3sum/
代码见:leetcode-15-三数之和
Majority Element(求众数)
英文版:https://leetcode.com/problems/majority-element/
中文版:https://leetcode-cn.com/problems/majority-element/
使用dict记录{当前num:出现次数}
1 | class Solution(object): |
或者调用Counter
1 | class Solution(object): |
Missing Positive(求缺失的第一个正数)
英文版:https://leetcode.com/problems/first-missing-positive/
中文版:https://leetcode-cn.com/problems/first-missing-positive/
思路:使用桶,大小为len(nums),负数可以丢弃,大于len(nums)的数也可以丢弃。遍历一遍后nums后,遍历桶,返回第一个空位index
代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums) + 1 # 0位置无效,多设置一位,使用index更直观
bucket = [0] * n
for e in nums:
# print(bucket)
if e > 0 and e < n: # 求的是第一个缺失的正整数,>n的数可以丢弃
bucket[e] = e # 非0值,设置为e方便debug
# print(bucket)
for i in range(1, n):
if bucket[i] == 0:
return i
return n
s = Solution()
print(s.firstMissingPositive([1, 2, 0])) # 3
print(s.firstMissingPositive([1, 2])) # 3
print(s.firstMissingPositive([3, 4, -1, 1])) # 2
print(s.firstMissingPositive([7, 8, 9, 11, 12])) # 1
字符串
实现一个字符集,只包含 a~z 这 26 个英文字母的 Trie 树
Trie树又叫做前缀树(Prefix Tree)
将每个节点的children都是一个dict,根据dict中的key找下一个节点
1 | # coding:utf-8 |
实现朴素的字符串匹配算法
字符串匹配:字符串”abcde”中是否含有字符串”bd”
朴素算法:暴力解,下面给出了2种方式
1 | # coding:utf-8 |
对应的 LeetCode 练习题
Reverse String (反转字符串)
英文版:https://leetcode.com/problems/reverse-string/
中文版:https://leetcode-cn.com/problems/reverse-string/
代码见:leetcode-344-反转字符串
Reverse Words in a String(翻转字符串里的单词)
英文版:https://leetcode.com/problems/reverse-words-in-a-string/
中文版:https://leetcode-cn.com/problems/reverse-words-in-a-string/
代码如下:
1 | class Solution(object): |
String to Integer (atoi)(字符串转换整数 (atoi))
英文版:https://leetcode.com/problems/string-to-integer-atoi/
中文版:https://leetcode-cn.com/problems/string-to-integer-atoi/
代码见:leetcode-8-字符串转换整数(atoi)