Skip to content

week_02 #427

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
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
1 change: 1 addition & 0 deletions NOTE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# 学习笔记
10 changes: 10 additions & 0 deletions Week_01/id_19/24.py
Original file line number Diff line number Diff line change
@@ -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
11 changes: 11 additions & 0 deletions Week_01/id_19/83.py
Original file line number Diff line number Diff line change
@@ -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
21 changes: 21 additions & 0 deletions Week_01/id_19/README.md
Original file line number Diff line number Diff line change
@@ -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)视频课程。
12 changes: 12 additions & 0 deletions Week_02/id_19/671.py
Original file line number Diff line number Diff line change
@@ -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
11 changes: 11 additions & 0 deletions Week_02/id_19/692.py
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions Week_03/id_19/104.py
Original file line number Diff line number Diff line change
@@ -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
23 changes: 23 additions & 0 deletions Week_03/id_19/703.py
Original file line number Diff line number Diff line change
@@ -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]
5 changes: 5 additions & 0 deletions Week_04/id_19/169.py
Original file line number Diff line number Diff line change
@@ -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]
10 changes: 10 additions & 0 deletions Week_04/id_19/720.py
Original file line number Diff line number Diff line change
@@ -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