diff --git a/Week_01/id_15/LeetCode_189_015.py b/Week_01/id_15/LeetCode_189_015.py new file mode 100644 index 00000000..1c241955 --- /dev/null +++ b/Week_01/id_15/LeetCode_189_015.py @@ -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] diff --git a/Week_01/id_15/LeetCode_26_015.py b/Week_01/id_15/LeetCode_26_015.py new file mode 100644 index 00000000..68619dfb --- /dev/null +++ b/Week_01/id_15/LeetCode_26_015.py @@ -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) + diff --git a/Week_01/id_15/NOTE.md b/Week_01/id_15/NOTE.md index 107ea7d6..cdab5526 100644 --- a/Week_01/id_15/NOTE.md +++ b/Week_01/id_15/NOTE.md @@ -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. 继续刷剩余的算法题(上周剩余及本周新增)