Leetcode习题集-链表
这里记录一些我刷题的思路方便之后进行复习重温,同时也方便进行添加
P141-环形链表
class Solution {
public:
bool hasCycle(ListNode *head) {
if(!head) return false;
if(!head->next) return false;
ListNode* last = reverse(head);
return last==head;
}
ListNode* reverse(ListNode* head){
ListNode *pre=NULL,*curr=head;
while(curr){
ListNode* next = curr->next;
curr->next=pre;
pre=curr;
curr=next;
}
return pre;
}
};
使用翻转链表,判断返回的指针与传进的指针是否相同,时间复杂度是O(N)(?可能),空间复杂度是O(1).
class Solution {
public:
bool hasCycle(ListNode *head) {
if(!head||!head->next) return false;
ListNode *fast=head->next,*slow=head;
while(fast!=slow){
if(!fast||!fast->next) return false;
fast=fast->next->next;
slow=slow->next;
}
return true;
}
};
使用快慢指针Floyd 判圈算法,如果有环则兔子会与龟碰上,但没有环则会到NULL,这里有一个小知识点就是!fast||!fast->next这个条件需要先判断fast是否为空,顺序不能翻转否则可能进入死循环,因为判断的顺序从左到右。
p19-删除链表的倒数第N个节点
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
head=reverse(head);
int i=1;
ListNode* ptr=head;
if(i==n) return reverse(head->next);
i++;
while(ptr&&ptr->next){
if(i==n){
ptr->next=ptr->next->next;
break;
}
ptr=ptr->next;
i++;
}
return reverse(head);
}
ListNode* reverse(ListNode* head){
ListNode* pre=NULL,*curr=head;
while(curr){
ListNode* next = curr->next;
curr->next=pre;
pre=curr;
curr=next;
}
return pre;
}
};
两次翻转。
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode *slow=head, *fast=head;
while(n){
fast=fast->next;
n--;
}
if(!fast) return head->next;
while(fast->next){
fast=fast->next;
slow=slow->next;
}
slow->next=slow->next->next;
return head;
}
};
快慢指针,将最后一段的间隔设定好,即快指针先跑结尾长度,然后双指针齐头并进。
Leetcode习题集-链表的更多相关文章
- Leetcode解题-链表(2.2.0)基础类
1 基类的作用 在开始练习LeetCode链表部分的习题之前,首先创建好一个Solution基类,其作用就是: Ø 规定好每个子Solution都要实现纯虚函数test做测试: Ø 提供了List ...
- LeetCode 单链表专题 (一)
目录 LeetCode 单链表专题 <c++> \([2]\) Add Two Numbers \([92]\) Reverse Linked List II \([86]\) Parti ...
- 【算法题 14 LeetCode 147 链表的插入排序】
算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...
- 关于leetcode中链表中两数据相加的程序说明
* Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ ...
- LeetCode之“链表”:Reverse Linked List && Reverse Linked List II
1. Reverse Linked List 题目链接 题目要求: Reverse a singly linked list. Hint: A linked list can be reversed ...
- 关于LeetCode上链表题目的一些trick
最近在刷leetcode上关于链表的一些高频题,在写代码的过程中总结了链表的一些解题技巧和常见题型. 结点的删除 指定链表中的某个结点,将其从链表中删除. 由于在链表中删除某个结点需要找到该结点的前一 ...
- Leetcode中单链表题总结
以下是个人对所做过的LeetCode题中有关链表类型题的总结,博主小白啊,若有错误的地方,请留言指出,谢谢. 一.有关反转链表 反转链表是在单链表题中占很大的比例,有时候,会以各种形式出现在题中,是比 ...
- LeetCode之链表总结
链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度.作为一种常用的数据结构,链表内置在很多高级编程语言里面.既比数组复杂又比树简单,所以链表经常被面试官 ...
- leetcode 876. 链表的中间结点 签到
题目: 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式: ...
- leetcode 反转链表部分节点
反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m = 2, ...
随机推荐
- C#笔记誊录
1.继承 面向对象的三大特征: 封装性 继承性 多态性 一.继承:类与类的关系 为什么会用继承:减少代码重复 优化 空间内存 实现多态 class 基类 { //基类成员 } class 子类:基类 ...
- 在Windows上安装torch遇到的部分问题
1.版本问题 老师新买的这台机器是RTX 3060,没动显卡驱动,直接安装的CUDA,装的11.4,完全按照这篇blog来的,非常舒服:https://blog.csdn.net/qq_4504187 ...
- 解决 VSCode git commit 时 No such file or directory 报错问题
在git 进行 commit 时出现了 Git: .git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file ...
- Camstar代码:指定执行某函数
- kubeadm安装
目录: 环境准备 所有节点安装docker 部署K8s集群 部署Dashboard 安装Harbor私有仓库 安装 master(2C/4G,cpu核心数要求大于2) 192.168.63.100 d ...
- go 语言的宕机恢复(recover)
go 语言中的三种报错机制 第一种,也就是常说的 error 类型错误,不需要 recover 拯救,处理方式自己决定 第二种,panic 和 recover 是紧密集合的,有点类似 try catc ...
- 树莓派3B 查看GPU、CPU温度
参考:How to find out Raspberry Pi GPU and ARM CPU temperature on Linux GPU温度: /opt/vc/bin/vcgencmd mea ...
- ES6-moudle
一.基础认知 结合案例体验module: 前面模拟模块是用立即执行的匿名函数,需要把某些通过window暴露出去,所以还是不能消除全局变量 module模块系统需要服务器环境才能正常执行,在html文 ...
- os-内核通知链notifier.c
8. linux内核通知链 8.1. 概述 在Linux内核中,各个子系统之间有很强的相互关系,某些子系统可能对其它子系统产生的事件感兴趣.为了让某个子系统在发生某个事件时通知感兴趣的子系统,Linu ...
- matplotlib处理数据可是化的时候出现中文显示异常,为[][]的解决方法
1.在使用matplotlib处理数据实现可是化操作的时候,处于语言习惯,经常会使用中文做图表备注,而中文显示会出现异常,如下图: 中文显示异常 那如何解决呢,实际上我们只需要在代码中添加两行内容即可 ...