此博客链接:
删除排序链表中的重复元素题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/
题目
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
题解
我一开始还想着先用哈希把节点都保存一下,后来发现题目已经是有序的,如果有重复的节点,一定在前一个节点的后面,这就降低了难度。
判断当前节点和后一个节点是否相等,如果相等则把当前节点的next指向后一个节点的next。
代码
/** * 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){ return head; } ListNode p=head; while(p.next!=null){ if(p.next.val==p.val) { p.next=p.next.next; } else p=p.next; } return head; } }
结果