ps.
这里主要是LeetCode、Codeforces、XCPC或许还有各大高校同步赛等练习题的笔记
一题有多解,但笔者只给出自己擅长的解法,也不一定是最优的,请批判性地看
AC代码一般网上都有,若找不到,欢迎私信交流~
2022.7.5
- 剑指 Offer 09. 用两个栈实现队列
–
- 剑指 Offer 30. 包含min函数的栈
– 借助辅助队列
- 733.图像渲染
– 简单题,BFS或DFS即可实现
// 伪代码
queue<pair<int,int>> Q;
Q.emplace(x,y)
while(!Q.empty()){
tmpx=Q.front().first;
tmpy=Q.front().second;
Q.pop();
if(){
Q.emplace(tmpxx,tmpyy);
}
}
- 200.岛屿数量
– 简单题,跟上题类似,BFS,DFS
– BFS再套一层循环判断每一个点是否为1
2022.7.6
- 剑指 Offer 06. 从尾到头打印链表
– 简单题,借助辅助数组存储,然后reverse()
- 剑指 Offer 24. 反转链表
– 简单题,一开始想法是建立一个新的链表,用头插法实现原链表反转
– 看了题解,有更巧妙并且容易理解的办法
- 剑指 Offer 35. 复杂链表的复制
– 笔者自认为对指针的理解还不够到位,下次出个专题
– 这里的复制注意不是简单的复制,需要重新构造一个链表,可以采用哈希映射存储原来的指针关系map<Node*,Node*> MAP
,然后重新new Node
- 695.岛屿的最大面积
– 是昨日200.岛屿数量一题的进阶版,只需在每次更新gird[i][j]
的时候sum++
,然后将每一块岛屿的面积存在数组里,最后sort()
一下,返回最大值