From 5df911ff56f77b599713a39d01685dcac35964f6 Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 16 Jun 2019 20:25:02 +0800 Subject: [PATCH 1/8] Create LeetCode_1_015.py --- Week_02/id_15/LeetCode_1_015.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Week_02/id_15/LeetCode_1_015.py diff --git a/Week_02/id_15/LeetCode_1_015.py b/Week_02/id_15/LeetCode_1_015.py new file mode 100644 index 00000000..ee5d6dd2 --- /dev/null +++ b/Week_02/id_15/LeetCode_1_015.py @@ -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 From 80f68547e633a2cc679188e3489caf8f6129de5c Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 16 Jun 2019 20:26:34 +0800 Subject: [PATCH 2/8] Create LeetCode_242_015.py --- Week_02/id_15/LeetCode_242_015.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Week_02/id_15/LeetCode_242_015.py diff --git a/Week_02/id_15/LeetCode_242_015.py b/Week_02/id_15/LeetCode_242_015.py new file mode 100644 index 00000000..b89088ca --- /dev/null +++ b/Week_02/id_15/LeetCode_242_015.py @@ -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 From 98a5da7c37269a662634e9a4b0b3f14226445338 Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 16 Jun 2019 20:27:17 +0800 Subject: [PATCH 3/8] Create LeetCode_3_015.py --- Week_02/id_15/LeetCode_3_015.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Week_02/id_15/LeetCode_3_015.py diff --git a/Week_02/id_15/LeetCode_3_015.py b/Week_02/id_15/LeetCode_3_015.py new file mode 100644 index 00000000..84c04c27 --- /dev/null +++ b/Week_02/id_15/LeetCode_3_015.py @@ -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 From b7901c54bc07c65e75e9d62146554367fd6e4dcd Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 16 Jun 2019 21:05:08 +0800 Subject: [PATCH 4/8] Update NOTE.md --- Week_02/id_15/NOTE.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Week_02/id_15/NOTE.md b/Week_02/id_15/NOTE.md index 107ea7d6..820d3a2c 100644 --- a/Week_02/id_15/NOTE.md +++ b/Week_02/id_15/NOTE.md @@ -1 +1,11 @@ # 学习笔记 +## 日常计划 + - 完成相对应的算法习题 + +## 算法相关书籍 + - 任务:完成数据结构与算法Python语言描述阅读 + - 心得:这本书完全第一遍刷下来以后发现不是非常入门的深度,比上本图解的书难很多。不少地方都需要听下来思考,收获是更加深入的了解了Python这个语言背后的一些数据结构与算法的实现原理。比如内置函数Sort()背后的算法是依据Tim算法来实现的,再比如如果要调用Python实现堆栈,可以考虑用deque这个数据结构。 + +## 下周计划 + - 复刷之前做过的算法题和尚未完成的新题 + - 完成新一周的算法作业 From 0affd36da2fd1b6f498a2fcf08cc276dd336000c Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 23 Jun 2019 21:51:21 +0800 Subject: [PATCH 5/8] Create LeetCode_1_200.py --- Week_03/id_15/LeetCode_1_200.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Week_03/id_15/LeetCode_1_200.py diff --git a/Week_03/id_15/LeetCode_1_200.py b/Week_03/id_15/LeetCode_1_200.py new file mode 100644 index 00000000..284862b6 --- /dev/null +++ b/Week_03/id_15/LeetCode_1_200.py @@ -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) From c7269cfa1a60bfd24187a6847371018432baab8a Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 23 Jun 2019 21:53:01 +0800 Subject: [PATCH 6/8] Rename LeetCode_1_200.py to LeetCode_200_015.py --- Week_03/id_15/{LeetCode_1_200.py => LeetCode_200_015.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_03/id_15/{LeetCode_1_200.py => LeetCode_200_015.py} (100%) diff --git a/Week_03/id_15/LeetCode_1_200.py b/Week_03/id_15/LeetCode_200_015.py similarity index 100% rename from Week_03/id_15/LeetCode_1_200.py rename to Week_03/id_15/LeetCode_200_015.py From fa62549de728847f6c43fb40da552f13223bf1eb Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 23 Jun 2019 21:53:18 +0800 Subject: [PATCH 7/8] Create LeetCode_210_015.py --- Week_03/id_15/LeetCode_210_015.py | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Week_03/id_15/LeetCode_210_015.py diff --git a/Week_03/id_15/LeetCode_210_015.py b/Week_03/id_15/LeetCode_210_015.py new file mode 100644 index 00000000..56b76a57 --- /dev/null +++ b/Week_03/id_15/LeetCode_210_015.py @@ -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 From 0e25405b1bcc86b57d986d560794cfe1475a817b Mon Sep 17 00:00:00 2001 From: Bruno Yang Date: Sun, 23 Jun 2019 22:37:01 +0800 Subject: [PATCH 8/8] Update NOTE.md --- Week_03/id_15/NOTE.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Week_03/id_15/NOTE.md b/Week_03/id_15/NOTE.md index 107ea7d6..f1e5a245 100644 --- a/Week_03/id_15/NOTE.md +++ b/Week_03/id_15/NOTE.md @@ -1 +1,19 @@ # 学习笔记 + +## 日常计划 + - 完成相对应的算法习题 + +## 心得交流 + - 本周和小组同学一起线下交流了一整个下午,大家非常认真的梳理了数据结构和算法的基本知识脉络。 + - 除了算法以外的分享外,同学们还给讲解了开发一般流程,记录如下: + - 需求沟通:产品经理与需求提出方进行需求沟通与分析,明确任务 + - 可行性分析:产品经理与程序员沟通,敲定可行性以及具体的使用语言与框架 + - 程序开发: + - 数据库人员建ER关系图 + - 开发人员进行程序开发 + - 程序测试 + - 产品交付与持续迭代 + +## 下周计划 + - 复刷之前做过的算法题和尚未完成的新题 + - 完成新一周的算法作业