【一次過】Lintcode 112:刪除排序連結串列中的重複元素
阿新 • • 發佈:2019-02-16
給定一個排序連結串列,刪除所有重複的元素每個元素只留下一個。
樣例
給出 1->1->2->null
,返回 1->2->null
給出 1->1->2->3->3->null
,返回 1->2->3->null
解題思路:
非常簡單,用一個指標currentNode與他的下一個元素兩者的值進行比較,若相同則刪除後一個元素,若不同則繼續遍歷。
/** * Definition of singly-linked-list: * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */ class Solution { public: /** * @param head: head is the head of the linked list * @return: head of linked list */ ListNode * deleteDuplicates(ListNode * head) { // write your code here if(head == NULL) return NULL; ListNode * currentNode = head; while(currentNode->next != NULL) { if(currentNode->val != currentNode->next->val) currentNode = currentNode->next; else currentNode->next = currentNode->next->next; } return head; } };
JAVA程式碼:
/** * Definition for ListNode * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { /** * @param head: head is the head of the linked list * @return: head of linked list */ public ListNode deleteDuplicates(ListNode head) { // write your code here if(head == null) return null; ListNode node = head; while(node.next != null){ if(node.val == node.next.val) node.next = node.next.next; else node = node.next; } return head; } }