快速拿下面试算法
在面试前一周,我刷了很多道算法,分类刷,有些是做过的,因为我是面试C++相关岗位,除了leetcode与剑指offer相关的算法,还需要手撕一些智能指针呀,单例模式呀、字符串呀、LRU、排序算法等等。
本节主要是以速训练算法及review基础为目的,内含60+道算法,代码量及涉及算法统计如下:
Languages
language | files | code | comment | blank | total |
---|---|---|---|---|---|
C++ | 49 | 4,146 | 633 | 353 | 5,132 |
Directories
path | files | code | comment | blank | total |
---|---|---|---|---|---|
. | 49 | 4,146 | 633 | 353 | 5,132 |
bfs_dfs | 6 | 695 | 92 | 57 | 844 |
dp | 12 | 533 | 134 | 54 | 721 |
dp/rob | 1 | 30 | 8 | 4 | 42 |
dp/剪绳子 | 1 | 30 | 10 | 1 | 41 |
dp/博弈论 | 1 | 61 | 22 | 5 | 88 |
dp/戳气球 | 1 | 21 | 9 | 2 | 32 |
dp/接雨水 | 1 | 153 | 13 | 14 | 180 |
dp/最大编辑距离 | 1 | 60 | 10 | 6 | 76 |
dp/背包 | 5 | 151 | 53 | 21 | 225 |
dp/贪心 | 1 | 27 | 9 | 1 | 37 |
hash | 1 | 135 | 17 | 14 | 166 |
link | 7 | 196 | 108 | 19 | 323 |
recursion_backtracke | 1 | 40 | 8 | 3 | 51 |
sliding_window | 2 | 69 | 17 | 6 | 92 |
slidingwindow | 1 | 230 | 19 | 15 | 264 |
sort | 2 | 165 | 20 | 12 | 197 |
stack | 1 | 67 | 9 | 3 | 79 |
sum问题 | 2 | 287 | 27 | 20 | 334 |
tree | 3 | 864 | 80 | 62 | 1,006 |
二分 | 1 | 116 | 13 | 9 | 138 |
手撕算法 | 10 | 749 | 89 | 79 | 917 |
手撕算法/heap | 4 | 277 | 40 | 39 | 356 |
手撕算法/kmp | 1 | 46 | 18 | 4 | 68 |
手撕算法/lru | 1 | 137 | 1 | 8 | 146 |
手撕算法/string | 1 | 106 | 8 | 8 | 122 |
手撕算法/单例模式 | 2 | 60 | 14 | 9 | 83 |
手撕算法/智能指针 | 1 | 123 | 8 | 11 | 142 |
可以看到上述总共5k行代码,相信两周左右的时间是可以review完毕的!
具体涉及算法如下:
dfs
463.岛屿的周长
695.岛屿的最大面积
200.岛屿的数量
694.不同岛屿的数量
305.岛屿数量II
773. 滑动谜题
链表
24. 两两交换链表中的节点
25. K 个一组翻转链表
92. 反转链表 II
160. 相交链表
2.两数之和
剑指 Offer 24. 反转链表
面试题 02.05. 链表求和
动态规划
背包问题
手撕0-1背包
416.分割等和子集
518.零钱兑换 II
70. 爬楼梯
322. 零钱兑换
博弈论
877. 石子游戏
贪心
柠檬找零
其他
312. 戳气球
剑指 Offer 14- I. 剪绳子
剑指 Offer 14- II. 剪绳子 I
42.接雨水
860. 柠檬水找零
72. 编辑距离
二分
排序数组,平方后,数组当中有多少不同的数字(相同算一个)
一个数据先递增再递减,找出数组不重复的个数,比如 [1, 3, 9, 1],结果为3,不能使用额外空间,复杂度o(n)
递增数组,找出和为k的数对
给出一个数组nums,一个值k,找出数组中的两个下标 i,j 使得 nums[i] + nums[j] = k
滑动窗口
3.无重复字符的最长子串
字符串的排列
排序
插入排序
冒泡排序
快速排序
三路快排
归并排序
sum问题
两数之和
三数之和
nSum
大数之和
栈
71.简化路径
哈希表及Union-Find
128.最长连续序列
一个无序数组,从小到大找到第一个缺的数,比如[8 2 4 3 6 9 7 11 12],第一个缺的就是5
31.下一个排列
55.跳跃游戏
AB两个排序数组,原地合并数组。(A当中穿插一些无效数字怎么处理?)
树
手撕二叉树操作
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
剑指 Offer 68 - II. 二叉树的最近公共祖先
337. 打家劫舍 III
100.相同的树
前中后非递归遍历及递归遍历
剑指 Offer 54. 二叉搜索树的第k大节点
222. 完全二叉树的节点个数
257. 二叉树的所有路径
129. 求根到叶子节点数字之和
最小路径和
124. 二叉树中的最大路径和
112.路径总和
113.路径总和 II
剑指 Offer 07. 重建二叉树
手撕算法相关
手撕lru
手撕memcpy、strcpy、strnpy、strlen、strstr、strcat、strcmp
手撕智能指针
手撕kmp
手撕单例
手撕堆
手撕两种线程安全的单例模式
scoped_ptr
autpo_ptr
unique_ptr
shared_ptr
为了拒绝白嫖,我自己写的代码获取方式,可私聊我微信(没加的,点击公众号右下角联系我)并支付9.9红包发你。