LeetCode刷题记录

LeetCode刷题记录——关键词:基础数据结构

一、链表

1. 一般问题
1.1 删除节点

<203. 移除链表元素>
<19. 删除链表的倒数第 N 个结点>:双指针,加入头结点pred,不用单独处理第一个节点被删除的情况。
<83. 删除排序链表中的重复元素>:找到最后一个相同的直接该链表,要比一个一个改更快。
<82. 删除排序链表中的重复元素 II>: 注意读题。

1.2 位置变换

<24. 两两交换链表中的节点>:使用单节点遍历会省一点点内存,也就是交换p->next和p->next->next,而不是交换p->next和q->next。
<25. K 个一组翻转链表>:头结点pred尾节点next的加入。
<206. 反转链表 >: 注意最后一个节点指向nulllptr。
<92. 反转链表 II>:需要同时保留pred和head指针、tail和next指针的情况,类似25题。

<61. 旋转链表>:注意循环的情况、注意最后一个节点后要指向nullptr、注意不要多1或少1。

<86. 分隔链表>:分别建小链表和大链表,再把小尾和大头相连,要比原地单指针修改一个链表更简单。最后一个节点后要指向nullptr,不然会套圈
<328. 奇偶链表>:和86本质上是一样的。

1.3 合并链表

<21. 合并两个有序链表>: 很简单。
<23. 合并K个升序链表>:在上一题的基础上使用分治递归优先级队列

2. 快慢指针
2.1 不需要算套圈

<876. 链表的中间结点>:fast和slow指针都从head开始即可。
<141. 环形链表>: 用哈希表也可以。
<>

2.2 需要算套圈

<142. 环形链表 II>
<160. 相交链表>

3.综合的题目

<143. 重排链表>:快慢指针找中点+原地反转+合并链表
<234. 回文链表>:快慢指针找中点+原地反转+遍历比较

4.奇怪的题目

<237. 删除链表中的节点>:删除节点的方法是替换掉节点的值…并不是常规意义上的删除。
<382. 链表随机节点>:水塘抽样?

二、树和二叉树

有时间再补充~

三、哈希

<141. 环形链表>: set.find(x) == set.end() //不在集合中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值