LeetCode 82:删除排序链表中的重复元素 II
2024-01-03 15:35:25
一、题目描述
给定一个已排序的链表的头?head
?,?删除原始链表中所有重复数字的节点,只留下不同的数字?。返回?已排序的链表?。
示例 1:
输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5]
示例 2:
输入:head = [1,1,1,2,3] 输出:[2,3]
提示:
- 链表中节点数目在范围?
[0, 300]
?内 -100 <= Node.val <= 100
- 题目数据保证链表已经按升序?排列
二、思路分析
三、代码参考
1、Java
class Solution {
public ListNode deleteDuplicates(ListNode head) {
// 创建虚拟节点,便于最后返回结果
ListNode preNode = new ListNode(0, head);
// 创建节点,用于遍历循环
ListNode currentNode = preNode;
// 循环链表,只要当前访问节点的下一个节点与下下个节点都存在,才继续访问
while(currentNode.next != null && currentNode.next.next != null){
// 判断前一个节点与后一个节点是否相同
if(currentNode.next.val == currentNode.next.next.val){
// 如果相同,就将值记录下来
int value = currentNode.next.val;
// 利用 while 循环,不断的查找出那些相同的节点值来
while(currentNode.next != null && currentNode.next.val == value){
// 遇到相同的值,把它删除掉,即跳过这个节点
currentNode.next = currentNode.next.next;
}
}
// 如果不相等,则 currentNode 向后移动
else {
currentNode = currentNode.next;
}
}
// 最后返回结果
return preNode.next;
}
}
2、Python
class Solution(object):
def deleteDuplicates(self, head):
# 创建虚拟节点,便于最后返回结果
preNode = ListNode(0,head)
# 创建节点,用于遍历循环
currentNode = preNode
# 循环链表,只要当前访问节点的下一个节点与下下个节点都存在,才继续访问
while currentNode.next and currentNode.next.next :
# 判断前一个节点与后一个节点是否相同
if currentNode.next.val == currentNode.next.next.val :
# 如果相同,就将值记录下来
value = currentNode.next.val
# 利用 while 循环,不断的查找出那些相同的节点值来
while currentNode.next and currentNode.next.val == value :
# 遇到相同的值,把它删除掉,即跳过这个节点
currentNode.next = currentNode.next.next
else :
# 如果不相等,则 currentNode 向后移动
currentNode = currentNode.next
# 最后返回结果
return preNode.next
文章来源:https://blog.csdn.net/Jarvs/article/details/135361645
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!