LeetCode:删除排序链表中的重复元素【83】
题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2 输出: 1->2
示例 2:
输入: 1->1->2->3->3 输出: 1->2->3
题目分析
这道题是链表中的双指针问题,常规思路是定义两个指针,一个slow,一个fast,首先题目已经说明是排序数组,所以所有重复元素都是挨着的,这样子的话我们就要考虑删除多个元素的问题。
Java题解
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode deleteDuplicates(ListNode head) { if(head==null) return null; ListNode slow = head; ListNode fast = head.next; while(fast!=null) { while(fast!=null&&fast.val==slow.val) { fast=fast.next; } slow.next=fast; slow=slow.next; if(slow!=null) fast=slow.next; } return head; } }