Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Week_02/id_15/LeetCode_1_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
d={}
for i,num in enumerate(nums):
if target-num in d:
return d[target-num], i
d[num]=i
14 changes: 14 additions & 0 deletions Week_02/id_15/LeetCode_242_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if s =="" and t == "":
return True

if len(s) != len(t) or len(set(s)) != len(set(t)):
return False

for char in set(s):
s_count = s.count(char)
t_count = t.count(char)
if s_count != t_count:
return False
return True
12 changes: 12 additions & 0 deletions Week_02/id_15/LeetCode_3_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
substring, length, max_len = "", 0, 0
for c in s:
if c in substring:
index = substring.find(c)
substring = substring[(index + 1)::]
substring += c
length = len(substring)
if length > max_len:
max_len = length
return max_len
10 changes: 10 additions & 0 deletions Week_02/id_15/NOTE.md
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
# 学习笔记
## 日常计划
- 完成相对应的算法习题

## 算法相关书籍
- 任务:完成数据结构与算法Python语言描述阅读
- 心得:这本书完全第一遍刷下来以后发现不是非常入门的深度,比上本图解的书难很多。不少地方都需要听下来思考,收获是更加深入的了解了Python这个语言背后的一些数据结构与算法的实现原理。比如内置函数Sort()背后的算法是依据Tim算法来实现的,再比如如果要调用Python实现堆栈,可以考虑用deque这个数据结构。

## 下周计划
- 复刷之前做过的算法题和尚未完成的新题
- 完成新一周的算法作业
26 changes: 26 additions & 0 deletions Week_03/id_15/LeetCode_200_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
num_islands = 0

for row in range(len(grid)):
for column in range(len(grid[0])):
if grid[row][column] == '1':
num_islands += 1
self.island_dfs(grid, row, column)

return num_islands

def island_dfs(self, grid, row, column):
min_row, max_row = 0, len(grid) - 1
min_column, max_column = 0, len(grid[0]) - 1

if (not min_row <= row <= max_row) or (not min_column <= column <= max_column):
return
elif grid[row][column] != '1':
return
else:
grid[row][column] = '0'
self.island_dfs(grid, row-1, column)
self.island_dfs(grid, row+1, column)
self.island_dfs(grid, row, column-1)
self.island_dfs(grid, row, column+1)
33 changes: 33 additions & 0 deletions Week_03/id_15/LeetCode_210_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
class Solution:
def dfs(self, n, g, flags, seqs):
if flags[n] == 0: return False
if flags[n] == 1: return True

flags[n] = 0
for m in g[n]:
if not self.dfs(m,g,flags,seqs): return False
flags[n] = 1
seqs.append(n)
return True

def findOrder(self, numCourses, prerequisites):
"""
:type numCourses: int
:type prerequisites: List[List[int]]
:rtype: List[int]
"""

g = [[] for _ in range(numCourses)]
for b,a in prerequisites:
g[a].append(b)

# -1: not visited
# 0: visiting
# 1: visited
flags = [-1]*numCourses
seqs = []
for i in range(numCourses):
if not self.dfs(i,g,flags,seqs): return []

seqs = seqs[::-1]
return seqs
18 changes: 18 additions & 0 deletions Week_03/id_15/NOTE.md
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
# 学习笔记

## 日常计划
- 完成相对应的算法习题

## 心得交流
- 本周和小组同学一起线下交流了一整个下午,大家非常认真的梳理了数据结构和算法的基本知识脉络。
- 除了算法以外的分享外,同学们还给讲解了开发一般流程,记录如下:
- 需求沟通:产品经理与需求提出方进行需求沟通与分析,明确任务
- 可行性分析:产品经理与程序员沟通,敲定可行性以及具体的使用语言与框架
- 程序开发:
- 数据库人员建ER关系图
- 开发人员进行程序开发
- 程序测试
- 产品交付与持续迭代

## 下周计划
- 复刷之前做过的算法题和尚未完成的新题
- 完成新一周的算法作业