1、题目描述
存在一个按升序排列的链表,给你这个链表的头节点 head
,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
2、算法分析
和以下题目进行比较
② 删除链表中重复的结点,重复结点不保留
思路:
先判断当前结点是否为null,为null返回head
定义ListNode current = head;
遍历current就可以。接下来判断if(current.val == current.next.val),相邻相等,删除第二个相等的。current.next = current.next.next;不等的话,current = current.next;
3、代码实现
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode current = head;
while(current != null && current.next != null){
if(current.val == current.next.val){
current.next = current.next.next;
}else{
current = current.next;
}
}
return head;
}
}