本题是leetcode,地址:83. 删除排序链表中的重复元素html
给定一个排序链表,删除全部重复的元素,使得每一个元素只出现一次。java
示例 1:数组
输入: 1->1->2
输出: 1->2
示例 2:指针输入: 1->1->2->3->3
输出: 1->2->3code
此题跟leetcode-26-删除排序数组中的重复项解法很相似,只不过此次是链表;回顾一下上一个题的解法htm
快慢指针的妙用,利用两个指针i, j,初始化值为0和1,当两个指针对应的值相等时,指针j+1,继续执行循环;而当两个指针对应的值不相等时,将指针i+1,并将指针j对用的值赋值给指针i,而后指针j+1,继续向下执行循环,直到循环结束。blog
细节须要注意:最后慢指针是最后一个数据的索引,题目要求是返回数组的长度,因此须要 +1返回;排序
ListNode left = head; // 慢指针 ListNode right = head.next; // 快指针 一样的,判断两个值是否相等,便可,代码很简单
public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null){ return head; } ListNode left = head; ListNode right = head.next; while (right != null) { int v = right.val; if(v == left.val) { left.next = right.next; } else { left = left.next; } right = right.next; } return head; }
打赏地址索引