diff --git a/NOTE.md b/NOTE.md new file mode 100644 index 00000000..c684e62f --- /dev/null +++ b/NOTE.md @@ -0,0 +1 @@ +# 学习笔记 \ No newline at end of file diff --git a/Week_01/id_19/24.py b/Week_01/id_19/24.py new file mode 100644 index 00000000..bed91010 --- /dev/null +++ b/Week_01/id_19/24.py @@ -0,0 +1,10 @@ +class Solution: + def swapPairs(self, head): + dummy = pre = ListNode(0) + pre.next = head + while pre.next and pre.next.next: + a = pre.next + b = a.next + pre.next, a.next, b.next = b, b.next, a + pre = a + return dummy.next diff --git a/Week_01/id_19/83.py b/Week_01/id_19/83.py new file mode 100644 index 00000000..01330433 --- /dev/null +++ b/Week_01/id_19/83.py @@ -0,0 +1,11 @@ +class Solution: + def deleteDuplicates(self, head: ListNode) -> ListNode: + prev = head + while(prev): + while(prev.next): + if prev.val == prev.next.val: + prev.next = prev.next.next + else: + break + prev = prev.next + return head diff --git a/Week_01/id_19/README.md b/Week_01/id_19/README.md new file mode 100644 index 00000000..9d475d59 --- /dev/null +++ b/Week_01/id_19/README.md @@ -0,0 +1,21 @@ +# 极客大学「算法训练营」作业提交仓库 + + +## 仓库目录结构说明 + +1. `Week_01/` 代表第一周作业提交目录,以此类推。 +2. `Week_01/id_0`代表学号为 0 的学员第一周的作业提交目录,以此类推。 +3. 每个目录下面均有一个 `NOTE.md` 文档,你可以将自己当周的学习心得以及做题过程中的思考记录在该文档中(这个不属于作业内容,是可选项)。 + +## 作业提交规则 + +1. 先将本仓库 `fork` 到自己的 GitHub 账号下。 +2. 将 `fork` 后的仓库 `clone` 到本地,然后在本地新建、修改自己的代码作业文件,**注意:** 仅允许在和自己学号对应的目录下新建或修改自己的代码作业。作业完成后,将相关代码 `push` 到自己的 GitHub 远程仓库。 +3. 提交 `Pull Request` 给本仓库,同时备注自己的学号(主要是让学员作业有一个统一留存的地方,大家可以互相学习参考)。 +4. 在当周公布作业的 issue 下面提交自己仓库中的作业链接(由于提交和接受 pull request 之间有一些时间差,所以建议提交自己仓库对应代码作业的链接),供老师统一查看及点评。 + +## 注意事项 + +1. **代码文件命名规则:**`LeetCode_题目序号_学号`,比如学号为 `0` 的学员完成 [LeetCode 的第 2 题](https://leetcode.com/problems/add-two-numbers/description/) 后,请将代码文件名保存为 `LeetCode_2_0.py` (假设你使用的是 Python 语言)。 +2. **作业公布地址:** 我们会在置顶的 issue 中公布当周的算法练习题以及其他注意事项。 +3. 如果对 Git 和 GitHub 不太了解,请参考 [Git 官方文档](https://git-scm.com/book/zh/v2) 或者极客时间的[《玩转 Git 三剑客》](https://time.geekbang.org/course/intro/145)视频课程。 diff --git a/Week_02/id_19/671.py b/Week_02/id_19/671.py new file mode 100644 index 00000000..25957a7d --- /dev/null +++ b/Week_02/id_19/671.py @@ -0,0 +1,12 @@ +def findSecondMinimumValue(self,root): + self.ans = float('inf') + min1 = root.val + def dfs(node): + if nod: + if min < node.val < self.ans: + self.ans = node.val + elif node.val == min1: + dfs(node.left) + dfs(node.right) + dfs(root) + return self.ans if self.ans < float('inf') else -1 diff --git a/Week_02/id_19/692.py b/Week_02/id_19/692.py new file mode 100644 index 00000000..a1eca1fc --- /dev/null +++ b/Week_02/id_19/692.py @@ -0,0 +1,11 @@ +class Solution(object): + def topKFrequent(self,words:List[str],k:int): + d = {w:0 for w in words} + for w in words: + d[w] += 1 + l = list(d.items()) + l.sort(key=lambda x:(-x[1],x[0])) + ans = [] + for i in range(k): + ans += l[i][0] + return ans diff --git a/Week_03/id_19/104.py b/Week_03/id_19/104.py new file mode 100644 index 00000000..f36bb139 --- /dev/null +++ b/Week_03/id_19/104.py @@ -0,0 +1,17 @@ +def maxDepth(self, root): + if not root: + return 0 + + tqueue, h = collections.deque(),0 + tqueue.append(root) + while tqueue: + nextlevel = collections.deque() + while tqueue: + front = tqueue.popleft() + if front.left: + nextlevel.append(front.left) + if front.right: + nextlevel.append(front.right) + tqueue = nextlevel + h += 1 + return h diff --git a/Week_03/id_19/703.py b/Week_03/id_19/703.py new file mode 100644 index 00000000..ce63d981 --- /dev/null +++ b/Week_03/id_19/703.py @@ -0,0 +1,23 @@ +class KthLargest(object): + + def __init__(self, k, nums): + """ + :type k: int + :type nums: List[int] + """ + nums.sort(reverse=True) + self.k = k + self.top_knums = nums[:k] + + def add(self, val): + """ + :type val: int + :rtype: int + """ + if self.k == len(self.top_knums) and val <= self.top_knums[-1]: + return self.top_knums[-1] + else: + self.top_knums.append(val) + self.top_knums.sort(reverse=True) + self.top_knums = self.top_knums[:self.k] + return self.top_knums[-1] diff --git a/Week_04/id_19/169.py b/Week_04/id_19/169.py new file mode 100644 index 00000000..8cbb5a58 --- /dev/null +++ b/Week_04/id_19/169.py @@ -0,0 +1,5 @@ +class Solution: + # @param num, a list of integers + # @return an integer + def majorityElement(self, num): + return sorted(num)[len(num)/2] diff --git a/Week_04/id_19/720.py b/Week_04/id_19/720.py new file mode 100644 index 00000000..0862ddc2 --- /dev/null +++ b/Week_04/id_19/720.py @@ -0,0 +1,10 @@ +class Solution(object): + def longestWord(self, words): + words.sort() + words_set, longest_word = set(['']), '' + for word in words: + if word[:-1] in words_set: + words_set.add(word) + if len(word) > len(longest_word): + longest_word = word + return longest_word