【LeetCode】C# 82、Remove Duplicates from Sorted List II

来源:互联网 发布:smtp服务器默认端口 编辑:程序博客网 时间:2024/06/07 12:51

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

给定有序链表,只保留其中唯一的元素。

思路:遍历,调用两个指针,pre代表前一个数的指针,cur在前面先走,遇到重复的就走到下一个数字。如果pre的next为cur,说明pre下一个数字不存在重复。否则直接跳过。

/** * Definition for singly-linked list. * public class ListNode { *     public int val; *     public ListNode next; *     public ListNode(int x) { val = x; } * } */public class Solution {    public ListNode DeleteDuplicates(ListNode head) {        if(head==null) return null;        ListNode FakeHead=new ListNode(0);        FakeHead.next=head;        ListNode pre=FakeHead;        ListNode cur=head;        while(cur!=null){            while(cur.next!=null&&cur.val==cur.next.val){                cur=cur.next;            }            if(pre.next==cur){                pre=pre.next;            }            else{                pre.next=cur.next;            }            cur=cur.next;        }        return FakeHead.next;    }}
阅读全文
0 0
原创粉丝点击