C++刷题周记(一)

把C++重拾起来系统刷题的第一周(4.16-4.23),也是同时为了复习数据结构与准备夏令营机试。

计划着主要是结合Acwing算法基础课的章节进行,同时也会穿插二刷之前用Java刷过的力扣题

目录

链表

双指针

栈与队列

单调栈

单调队列

哈希表

字符串哈希


链表:

基于数组模拟链表的模板题:Acwing 826   Acwing 827

应用:Leetcode 707. 设计链表

双指针:

模板题:Acwing 799     800     2816

应用:Leetcode 27. 移除元素  替换空格

经典题:Leetcode 151. 反转字符串中的单词

链表双指针:142. 环形链表 II

链表相交

19. 删除链表的倒数第 N 个结点

栈与队列:

用数组模拟队列与栈的模板题:Acwing  828   829

应用:Leetcode 20. 有效的括号

1047. 删除字符串中的所有相邻重复项

经典问题之逆波兰表达式:

Leetcode 150. 逆波兰表达式求值          Acwing 3302

单调栈:

模板题:Acwing 830

应用:Leetcode 739 每日温度   也可以参照carl的这篇题解更好理解

Leetcode 1944 队列中可以看到的人数

Leetcode 496 下一个更大元素 I

Leetcode 503 下一个更大元素 II

单调队列:

即经典的滑动窗口问题,需要通过deque实现

模板题:Acwing 154 滑动窗口(提交记录中有两个版本:用数组模拟deque与直接使用STL)

应用:Leetcode 239 滑动窗口最大值(用y总模板的思想非常轻松地ac了这道困难题)

优质题解:AcWing 154. 滑动窗口---$\color{red}{海绵宝宝来喽}$ - AcWing

堆:

模板题:Acwing 838 堆排序

参照了以下两篇题解,对创建堆与堆排序有了更清楚的认识:

https://www.acwing.com/solution/content/120483/

AcWing 838. 堆排序 分析i=n/2 - AcWing

同时学习了底层基于堆排序实现的priority_queue的用法,其默认实现的是大根堆

(参考了这篇博客) 若需要实现小根堆或自定义排序方式,则需要:

priority_queue<int, vector<int>, less<int> >pq;
//最后两个>之间要有空格

第二个参数:
vector< int > 是用来承载底层数据结构堆的容器,若优先队列中存放的是double型数据,就要填vector< double >
总之存的是什么类型的数据,就相应的填写对应类型。

第三个参数:
less< int > 表示数字大的优先级大,堆顶为最大的数字 即大根堆
greater< int >表示数字小的优先级大,堆顶为最小的数字 即小根堆
int代表的是数据类型,也要填对应的类型(参考了C++中创建大根堆与小根堆与作用

而 LeetCode 347. 前 K 个高频元素 中使用了自定义排序方法

通过此题也学习了pair的相关知识,其底层通过结构体实现,相当于map容器中的键值对元素

详情可见:https://blog.csdn.net/sevenjoin/article/details/81937695

哈希表:

模板:Acwing 840 模拟散列表

STL运用:Leetcode 454  四数相加

字符串哈希:

模板:Acwing 841                  模板题:Acwing 138

Leetcode 187  重复的DNA序列

字符串哈希模板中也蕴含着前缀和的思想,于是复习了算法基础课中的相关内容:

前缀和:Acwing 795   题解      二维前缀和:Acwing 796    题解

差分(即前缀和的逆过程):Acwing 797    题解     二维差分:Acwing 798   题解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值