Skip to content

Commit 6df7198

Browse files
committed
week02_homework
1 parent 7bf617c commit 6df7198

4 files changed

Lines changed: 117 additions & 1 deletion

File tree

Week02/1-两数之和.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
2+
#
3+
# 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
4+
#
5+
#
6+
#
7+
# 示例:
8+
#
9+
# 给定 nums = [2, 7, 11, 15], target = 9
10+
#
11+
# 因为 nums[0] + nums[1] = 2 + 7 = 9
12+
# 所以返回 [0, 1]
13+
#
14+
# Related Topics 数组 哈希表
15+
16+
17+
# leetcode submit region begin(Prohibit modification and deletion)
18+
class Solution:
19+
def twoSum(self, nums: List[int], target: int) -> List[int]:
20+
dic = {}
21+
for k,v in enumerate(nums):
22+
if target - v in dic:
23+
return [dic[target-v], k]
24+
dic[v] = k
25+
# leetcode submit region end(Prohibit modification and deletion)

Week02/NOTE.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,19 @@
1-
学习笔记
1+
# 学习笔记
2+
## 哈希表
3+
### 概念
4+
#### 根据关键码值(Key value)而直接进行访问的数据结构。
5+
#### 通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
6+
### 哈希碰撞
7+
#### 不同的输入得到了同一个哈希值,就会发生"哈希碰撞"
8+
## 树、二叉树、搜索树
9+
### 概念
10+
#### 二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点
11+
#### Linked List 是特殊化的 Tree Tree 是特殊化的 Graph
12+
### 二叉树遍历 Pre-order/In-order/Post-order
13+
#### 1.前序(Pre-order):根-左-右 2.中序(In-order):左-根-右 3.后序(Post-order):左-右-根
14+
## 堆、二叉堆
15+
### 堆的概念
16+
#### 可以迅速找到一堆数中最大值或者最小值的结构
17+
### 二叉堆性质
18+
#### 通过完全二叉树来实现:
19+
#### 是一棵完全树;树中任一节点的值总是>=其子节点的值。

Week02/N叉树的前序遍历.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 给定一个 N 叉树,返回其节点值的前序遍历。
2+
#
3+
# 例如,给定一个 3叉树 :
4+
#
5+
#
6+
#
7+
#
8+
#
9+
#
10+
#
11+
# 返回其前序遍历: [1,3,5,6,2,4]。
12+
#
13+
#
14+
#
15+
# 说明: 递归法很简单,你可以使用迭代法完成此题吗? Related Topics 树
16+
17+
18+
# leetcode submit region begin(Prohibit modification and deletion)
19+
"""
20+
# Definition for a Node.
21+
class Node:
22+
def __init__(self, val=None, children=None):
23+
self.val = val
24+
self.children = children
25+
"""
26+
27+
28+
class Solution:
29+
def preorder(self, root: 'Node') -> List[int]:
30+
if root is None:
31+
return []
32+
stack = [root] # 初始化一个数据
33+
out = []
34+
while stack:
35+
temp = stack.pop() # 先把栈顶的数据弹出来加入到 输出 集
36+
out.append(temp.val)
37+
if temp.children: # 如果该元素有子节点children 则反转加入到 stack 里(因为是前序遍历)
38+
for item in temp.children[::-1]:
39+
stack.append(item)
40+
return out
41+
42+
# leetcode submit region end(Prohibit modification and deletion)

Week02/字母易位词分组.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
2+
#
3+
# 示例:
4+
#
5+
# 输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
6+
# 输出:
7+
# [
8+
# ["ate","eat","tea"],
9+
# ["nat","tan"],
10+
# ["bat"]
11+
# ]
12+
#
13+
# 说明:
14+
#
15+
#
16+
# 所有输入均为小写字母。
17+
# 不考虑答案输出的顺序。
18+
#
19+
# Related Topics 哈希表 字符串
20+
21+
22+
# leetcode submit region begin(Prohibit modification and deletion)
23+
class Solution:
24+
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
25+
dict = {}
26+
for item in strs:
27+
key = tuple(sorted(item))
28+
dict[key] = dict.get(key, []) + [item]
29+
return list(dict.values())
30+
31+
# leetcode submit region end(Prohibit modification and deletion)

0 commit comments

Comments
 (0)