题目描述
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
输入:head = [1,1,2] 输出:[1,2]
输入:head = [1,1,2,3,3] 输出:[1,2,3]
题目解析
我们可以从有序链表这个突破点入手,由于是有序的链表,所以两个重复节点肯定是相邻的,因此我们通过循环比较当前节点的值和下一个节点的值是否相等来判断,如果相等则跳过该节点,否则指针往后遍历,代码如下:
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null){
return head;//判断边界值
}
ListNode currentNode = head;
while(currentNode.next != null){
if(currentNode.val == currentNode.next.val){
currentNode.next=currentNode.next.next;
}else{
currentNode=currentNode.next;}
}
return head;
}
}
创作不易,点个赞吧!