没有合适的资源?快使用搜索试试~ 我知道了~
基础算法+链表-队列-栈+面试必备+思维训练+编码能力训练
需积分: 5 0 下载量 154 浏览量
2023-08-07
23:09:42
上传
评论
收藏 695KB PDF 举报
温馨提示
试读
33页
面试必备基础算法,涉及链表、队列、栈; 编码能力训练与算法思维训练的良好示例; 秋招选手的算法通关参考; 打算提高算法能力的职场小白修炼必备;
资源推荐
资源详情
资源评论
玩转 LeetCode30 题
一、 链表及经典问题
1. LeetCode #141 环状链表
思路 1:使用哈希表存储已经遍历过的节点
思路 2:快慢指针做法
使用快慢指针,快指针一次向前 2 个节点,慢指针一次
向前一个节点,有环的链表中快指针和慢指针最终一定
会在环中相遇,无环的链表中快指针会率先访问到链表
尾,从而结束检测过程
代码:
class Solution {
public:
bool hasCycle(ListNode *head) {
if (head == nullptr) return false;
ListNode *p = head, *q = head->next;
while (p != q && q && q->next) {
p = p->next;
q = q->next->next;
}
return q && q->next;
}
};
2. LeetCode #142 环状链表 II
思路:参考本链接
代码:
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
if (head == nullptr) return nullptr;
ListNode *p = head, *q = head;
if (q->next == nullptr) return nullptr;
do {
p = p->next;
q = q->next->next;
} while (p != q && q && q->next);
if (q == nullptr || q->next == nullptr) return
nullptr;
p = head;
while (p != q) p = p->next, q = q->next;
return q;
}
};
4. LeetCode #206 反转链表
思路 1:迭代反转,可以使用虚拟头节点来进行头插法,
参考本链接
思路 2:递归反转,参考本链接
代码:
class Solution {
public:
ListNode *reverseList(ListNode *head) {
if (head == nullptr || head->next == nullptr) return head;
ListNode *tail = head->next, *p = reverseList(head->next);
head->next = tail->next;
tail->next = head;
return p;
}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == nullptr) return nullptr;
ListNode *pre = NULL, *cur = head, *p = head->next;
while (cur) {
cur->next = pre;
pre = cur;
(cur = p) && (p = p->next);
}
return pre;
}
};
5. LeetCode #92 反转链表 II
思路:使用虚拟头节点,通常用于链表的首地址有可能
改变的情况
代码:
class Solution {
public:
ListNode *reverseN(ListNode *head, int n) {
if (n == 1) return head;
ListNode *tail = head->next, *p = reverseN(head->next, n -
1);
head->next = tail->next;
tail->next = head;
return p;
}
ListNode *reverseBetween(ListNode *head, int m, int n) {
ListNode ret(0, head), *p = &ret;
int cnt = n - m + 1;
while (--m) p = p->next;
p->next = reverseN(p->next, cnt);
return ret.next;
}
};
剩余32页未读,继续阅读
资源评论
云镛
- 粉丝: 92
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功