/like-algorithms

每天一道算法题,突破自己

like-algorithms

由于业务实在太多 做不到天天做题了,只能是什么时候有时间间歇性来做题了

做一些刷算法题的记录,算是一个算法小白的学习算法之路

相信大部分同学都不是天才型选手,那么就用最好的方法我亦无他,惟手熟尔,同我们一起来将算法这有硬骨头啃起来吧!!!

起于 2020-5-18

在学习算法之前首先要掌握数据结构,数据结构是算法的基础

其次学习算法是一个持久战,并不是几天几周就能学的通透的

后面就是我将我的学习算法的心路历程,都记录一下,每天也就是看时间,一到两道题的样子

其实在做这个项目之前自己是对数据结构和一些简单的是掌握的,例如一些排序算法

也不过多的讨论数学,都是一些纯算法的解题

十二月八号

回溯一直弄不明白,现在专找回溯题来做做


第一周

这一周就做了一些简单的题作为热身

344. 反转字符串
206. 反转链表
面试题66. 构建乘积数组
面试题 10.05. 稀疏数组搜索
14. 最长公共前缀

第二周

这周开始qingkuadp方法, 先从简单的开始

如果对动态规划不算熟悉的话推荐看看B站视频动态规划可以说讲的很生动了,由简入深,吹爆。

53. 最大子序和
面试题 08.01. 三步问题
746. 使用最小花费爬楼梯
面试题42. 连续子数组的最大和
198. 打家劫舍

第三周

这周也还是继续动态规划,不过难度上升到了中等

983. 最低票价
877. 石子游戏
面试题63. 股票的最大利润
343. 整数拆分
516. 最长回文子序列

额外题

5. 最长回文子串
15. 三数之和
20. 有效的括号
21. 合并两个有序链表
49. 字母异位词分组

第四周

这周继续动态规划

0-1 背包问题
518. 零钱兑换 II
416. 分割等和子集
1143. 最长公共子序列
面试题14- I. 剪绳子

额外题

54. 螺旋矩阵
55. 跳跃游戏
56. 合并区间
62. 不同路径
66. 加一
70. 爬楼梯

第五周

由于时间少看看韩顺平老师的课这周开始先暂停刷题,用Deno+TypeScript代码练习。课跟完了继续刷题,开始记录跟课

  1. p30 ~ p40: 栈、前中后缀表示法、实现计算器
  2. p40 ~ p44: 逆波兰转换计算、递归的了解
  3. p44 ~ p50: 递归
  4. p50 ~ p63: 排序算法,算法复杂度,冒泡、选择、插入
  5. p63 ~ p69: 希尔、快排

额外题

73.矩阵置零
121. 买卖股票的最佳时机
125. 验证回文串
134. 加油站

跟课总结

这周周的跟课收货有但是不大,在这之前的积累,这大部分都掌握了,就算是对一些概念的了解和知识点的回顾

第六周

继续跟视频课程,利用下班回家后的时间,希望可以有新的收获

  1. p69 ~ p77: 归并、基数排序,排序算法的复杂度分析
  2. p77 ~ p81: 线性查找、二分查找
  3. 接下来几天都是在忙搬家的事

第七周

跟课跟课

  1. p81 ~ p86: 插值查找、斐波那契(黄金分割)查找
  2. p86 ~ p90: 哈希表
  3. 突发情况,公司项目有点问题,折腾到快三点,今天就停一下
  4. p90 ~ p96: 树的基础部分,二叉树的前中后序遍历
  5. p96 ~ p99: 二叉树查找、删除
  6. p99 ~ p102: 顺序存储二叉树

额外题

152. 乘积最大子数组
153. 寻找旋转排序数组中的最小值
187. 重复的DNA序列
200. 岛屿数量
217. 存在重复元素
219. 存在重复元素 II
238. 除自身以外数组的乘积
242. 有效的字母异位词
283. 移动零
349. 两个数组的交集
419. 甲板上的战舰
509. 斐波那契数
680. 验证回文字符串 Ⅱ

第八周

依旧跟课,一半已过,后续课程的难度比前面稍高,不过老师讲的非常细,只要**集中就没啥问题

  1. p102 ~ p106: 线索化二叉树
  2. p106 ~ p112: 遍历线索化二叉树、实际应用(堆排序)
  3. 有事耽搁了
  4. p112 ~ p118: 赫夫曼树、赫夫曼编码的了解
  5. p118 ~ p120: 赫夫曼树、编码的实现

额外题

695. 岛屿的最大面积
704. 二分查找
733. 图像渲染
796. 旋转字符串
836. 矩形重叠
844. 比较含退格的字符串
904. 水果成篮
905. 按奇偶排序数组

第九周

系统化的重新过了很多了,听完课再自己动手实现,收获还是挺多

  1. p120 ~ p122 赫夫曼压缩实现
  2. p122 ~ p124 赫夫曼解压实现
  3. p124 ~ p127 最佳实例,压缩文件
  4. p127 ~ p129 二叉排序树的创建、遍历
  5. p129 ~ p133 二叉排序树的删除

额外题

922. 按奇偶排序数组 II
83. 删除排序链表中的重复元素
19. 删除链表的倒数第N个节点
876. 链表的中间结点
328. 奇偶链表
92. 反转链表 II
7. 整数反转

第十周

把时间调换了下,晚上十二点之前睡觉,早上可以七点起来看书或者学习

  1. p133 ~ p140 二叉排序树删除两个子树的节点,平衡二叉树左旋转、右旋转
  2. p140 ~ p144 多叉树,23树
  3. p144 ~ p147 34树,B树,B+树,B*树
  4. p147 ~ p150 图的讲解、创建、dfs

额外题

9. 回文数
13. 罗马数字转整数
26. 删除排序数组中的重复项
27. 移除元素
189. 旋转数组
35. 搜索插入位置
67. 二进制求和

第十一周

调换作息时间刚开始有点不适应,坚持一两周习惯后白天也就没那么困了

  1. p150 ~ p153 图的bfs,bfs vs dfs 案例
  2. p153 ~ p158 新的篇章,程序员十大算法,二分查找(非递归)、分治算法、动态规划的分析
  3. p158 ~ p161 背包问题,暴力匹配字符串
  4. p161 ~ p163 kmp
  5. p163 ~ p165 kmp

额外题

88. 合并两个有序数组
392. 判断子序列
647. 回文子串
139. 单词拆分
740. 删除与获得点数
N数和
141. 环形链表

第十二周

持续学习,面向未来

  1. p165 ~ p170 贪心算法
  2. p170 ~ p172 普利姆算法
  3. p172 ~ p174 克鲁斯卡尔算法
  4. p174 ~ p178 克鲁斯卡尔算法
  5. p178 ~ p180 迪杰斯特拉算法介绍、图解

额外题

523. 连续的子数组和
374. 猜数字大小
375. 猜数字大小 II
205. 同构字符串
1140. 石子游戏 II
203. 移除链表元素

第十三周

视频算法课,这周应该就要结束了

  1. p180 ~ p185 迪杰斯塔拉算法,最短路径,(单个顶点)
  2. p185 ~ p190 弗洛伊德算法,最短路径,(各个顶点)
  3. p190 ~ 结束 骑士周游回溯算法,卖油翁的故事

额外题

290. 单词规律
258. 各位相加
136. 只出现一次的数字
137. 只出现一次的数字 II
1025. 除数博弈

第十四周

做做树的专题

1367. 二叉树中的列表
102. 二叉树的层序遍历
173. 二叉搜索树迭代器
面试题 04.04. 检查平衡性
112. 路径总和

额外题

237. 删除链表中的节点

第十五周

继续做树的专题,这周要回家一趟暂停几天

113. 路径总和 II
数组转化二叉树
437. 路径总和 III
951. 翻转等价二叉树

第十六周

返回上海,回归日常,加油!!!

94. 二叉树的中序遍历
98. 验证二叉搜索树
103. 二叉树的锯齿形层次遍历
105. 从前序与中序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树

第十七周

专攻树继续

114. 二叉树展开为链表
116. 填充每个节点的下一个右侧节点指针
129. 求根到叶子节点数字之和
144. 二叉树的前序遍历
145. 二叉树的后序遍历
222. 完全二叉树的节点个数
226. 翻转二叉树

第十八周

专攻树再次

230. 二叉搜索树中第K小的元素
404. 左叶子之和
450. 删除二叉搜索树中的节点
508. 出现次数最多的子树元素和
513. 找树左下角的值

第十九周

简单中等树最后一周

429. N叉树的层序遍历
515. 在每个树行中找最大值
530. 二叉搜索树的最小绝对差
559. N叉树的最大深度
572. 另一个树的子树
589. N叉树的前序遍历
590. N叉树的后序遍历
606. 根据二叉树创建字符串

第二十周

节前的几天

面试题 16.17. 连续数列
剑指 Offer 32 - II. 从上到下打印二叉树 II

第二十一周

节后回来手心工作学习

面试题 02.02. 返回倒数第 k 个节点