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
9 changes: 9 additions & 0 deletions Week_01/id_15/LeetCode_189_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Language: Python
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
k %= len(nums)
if k:
nums[:k], nums[k:] = nums[-k:], nums[:-k]
11 changes: 11 additions & 0 deletions Week_01/id_15/LeetCode_26_015.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Language: Python
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
curr_idx = 0
while curr_idx < len(nums) - 1:
if nums[curr_idx] == nums[curr_idx+1]:
del nums[curr_idx]
curr_idx -= 1
curr_idx += 1
return len(nums)

48 changes: 48 additions & 0 deletions Week_01/id_15/NOTE.md
Original file line number Diff line number Diff line change
@@ -1 +1,49 @@
# 学习笔记
## 本周回顾
本人非计算机专业出身,相比于其他同学而言基础会相对薄弱些。针对自己的能力特点,为自己设定了合理的学习计划和目标,并且于本周达成了三个小目标。
1. 算法图解图书阅读(核心内容笔记):
1. 二分查找的速度比简单(全局遍历)的查找速度快的多
2. O(log n) 比O(n)快,需要搜索的元素越多,前者比后者越快
3. 算法运行时间并不以秒为单位
4. 算法运行时间是从其增速的角度衡量
5. 算法运行时间用大O表示法来表示
6. 需要存储多个元素时,可以用数组或链表
7. 数组的元素都在一起
8. 链表的元素是分开的,其中每个元素都存储了下一个元素的地址
9. 数组的读取速度是很快的
10. 链表的插入和删除速度是很快的
11. 同一个数组中,所有元素的类型都必须相同
12. 递归指的是调用自己的函数
13. 每个递归函数都有两个条件:基线条件和递归条件
14. 栈有两种操作:压入和弹出;并且栈是后进先出(LIFO);队列是先进先出(FIFO)
15. 所有函数调用都进入调用栈
16. D & C (分治)将问题逐步分解,编写涉及数组的递归函数时,基线条件通常是数组为空或只包含一个元素。
17. 散列表合适用于模拟映射关系
18. 一旦装填因子超过0.7,就该调整该散列表的长度
19. 图的广度优先搜索支出是否具有从A到B的最短路径,如果有广度优先搜索将找出最短路径
20. 面临类似寻找最短路径的问题时,可以尝试使用图来建立模型,再使用广度优先搜索来解决问题。
21. 你需要按照加入顺利来检查搜索列表中的人,否则找到的就不是最短路径,因此搜索列表必须是队列。
22. 对于检查过的人,务必不要再去检查,否则形成无限循环。
23. 广度优先搜索用于在非加权图中查找最短路径
24. 狄克思算法用于在加权图中寻找最短路径
25. 仅当权重为非负的时候,狄克思算法才管用
26. 如果图包含负权边,请使用贝尔曼-福德算法
27. 贪婪算法寻找局部最优解,企图以这种方式获取全局最优解
28. 对于NP完全问题(Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题),还没有找到快速解决方案
29. 面临NP问题的最优做法是使用近似算法
30. 贪婪算法易于实现,运行速度快,是不错的近似算法
31.在给定约束条件下优化某种指标的时候,动态规划很有用
32. 问题可分解为离散子问题,可使用动态规划来解决
33. 每种动态规划方案都涉及网络
34. 单元格中的值通通常就是要优化的值
35. 每个单元格都是一个子问题,因此你需要考虑如何将问题分解为子问题

2. Git视频课程30讲
2.1 核心内容笔记:https://mubu.com/doc/21G3uNP1Lw

3. 算法视频课程20节
4. 算法习题2题

## 下周规划
1. 读完半本(200页左右)的算法与数据结构Python语言描述
2. 继续刷剩余的算法题(上周剩余及本周新增)