【leetcode刷题笔记】Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
题解:水题不解释
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode *deleteDuplicates(ListNode *head) { 12 ListNode *p = head; 13 while(p != NULL){ 14 while(p->next != NULL && p->next->val == p->val){ 15 ListNode* temp = p->next; 16 p->next = p->next->next; 17 delete(temp); 18 } 19 if(p!=NULL) 20 p = p->next; 21 } 22 return head; 23 } 24 };
Java版本:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode deleteDuplicates(ListNode head) { 14 if(head == null) 15 return head; 16 ListNode current = head; 17 ListNode next = current.next; 18 while(next != null){ 19 if(current.val == next.val){ 20 //删除next指向的节点 21 current.next = next.next; 22 next = current.next; 23 }else { 24 current = next; 25 } 26 } 27 return head; 28 } 29 }