这里写目录标题
- 一、83. 删除排序链表中的重复元素
- 二、206. 反转链表
- 三、234. 回文链表
一、83. 删除排序链表中的重复元素
简单
1.1K
相关企业
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列
def deleteDuplicates(head:ListNode):
if head is None:
return None
cur=head
while cur.next:
if cur.next.val==cur.val:
cur.next=cur.next.next
else:
cur=cur.next
return head
二、206. 反转链表
简单
3.4K
相关企业
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]
class Solution:
def reverseList(self,head:ListNode):
cur=head #指向头节点
pre=None #
while cur:
temp=cur.next
cur.next=pre
pre=cur
cur=temp
return pre
三、234. 回文链表
简单
1.8K
相关企业
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
示例 1:
输入:head = [1,2,2,1]
输出:true
示例 2:
输入:head = [1,2]
输出:false
思路:推倒算法:当需要比较正向和反向的值的时候,栈可以轻松的做到,因为其先进后出的特性。我们先将原链表的值入栈,结束后依次出栈,和原序列的每个值相比较
class Solution:
def func(self,head:ListNode):
tmp=head
helper=[]
while tmp:
helper.append(tmp.val)
tmp=tmp.next
while head:
if head.val!=helper.pop():
return False
head=head.next
return True