给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例1:
输入: 1->1->2
输出: 1->2
示例2:
输入: 1->1->2->3->3
输出: 1->2->3
思路:
建立两个指针相邻地遍历两个节点,重复时删除。
按部就班即可,主要注意空链表或者一个节点的链表。
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) {
ListNode temp = head;
if(temp == null){
return null;
}
if(temp.next == null){
return head;
}
ListNode pre_node = temp;
temp = temp.next;
while(temp != null){
if(temp.val == pre_node.val){
pre_node.next = temp.next;
}else{
pre_node = pre_node.next;
}
temp = temp.next;
}
return head;
}
}
结果:
执行用时 : 1 ms, 在Remove Duplicates from Sorted List的Java提交中击败了96.13% 的用户
内存消耗 : 37.4 MB, 在Remove Duplicates from Sorted List的Java提交中击败了1.00% 的用户