删除排序链表中的重复元素

此博客链接:

删除排序链表中的重复元素

题目链接: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;
    }
}

 

结果

 

 

posted @ 2021-08-10 16:51  萍2樱释  阅读(35)  评论(0编辑  收藏  举报