Given a sorted linked list, delete all duplicates such that each element appear onlyonce.
For example,Given1->1->2, return1->2.Given1->1->2->3->3, return1->2->3.
LeetCode上很簡單的一道題,處理鏈表將鏈表中重復的數值去除只保留一個。大致流程如下:
1.先判斷鏈表是否為空或只有一個結點,是的話直接返回,否則進行一般處理。
2.head為前一個結點,nextNode為后head指向的后一個節點,nextNode不為空時說明沒有到達鏈表尾部,進入while循環。
3.注意head.val==nextNode.val時,考慮超過兩個重復值的情況,將head的下一節點指向nextNode的下一個節點,去除nextNode,head結點不變。
head.val!=nextNode.val時,head后移指向nextNode。
最后將nextNode賦值為next指向的下一節點,繼續循環比較。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode result = head; if(head==null||head.next==null) return head; else{ ListNode nextNode = head.next; while(nextNode!=null){ if(head.val == nextNode.val) head.next = nextNode.next; else head = nextNode; nextNode = head.next; } } return result; }}新聞熱點
疑難解答