删除排序链表中的重复元素-力扣83-java

一、题目描述

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

删除排序链表中的重复元素-力扣83-java_第1张图片

示例 1:

输入:head = [1,1,2]

输出:[1,2]

示例 2:

输入:head = [1,1,2,3,3]

输出:[1,2,3]

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、运行结果

删除排序链表中的重复元素-力扣83-java_第2张图片

三、解题思路

从前往后扫描链表,如果下一个结点的值和当前结点的值相同,则将当前结点的next指针指向下下个结点(跳过下一个结点),如果不相等,就将当前指针往后移一个位置。

四、AC代码

/**
 * 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) {
        ListNode p = head;
        while(p!=null && p.next!=null){
            if(p.val == p.next.val){   //两个结点值相等
                p.next = p.next.next;  //删掉p的下一个结点
            } 
            else 
                p = p.next;  //指针后移
        }
        return head;
    }
}

你可能感兴趣的:(#,力扣-java,链表,力扣,java,排序,重复元素)