力扣LeetCode #83 刪除排序連結串列中的重複元素(DeleteDuplicates)
阿新 • • 發佈:2021-01-26
- 題目描述
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。
- 示例
- 示例 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() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode newHead = head; //新連結串列的頭節點
ListNode last = head; //用來連線新連結串列,指向新連結串列的最後一個節點
while(head!=null && head.next != null) {
head = head.next;
if(head.val != last.val) { //當前值不等於新連結串列的最後一個節點時,該值可以加入連結串列
last.next = head; //將該值加入連結串列
last = last.next; //保證last指向新連結串列的最後一個節點
}
}
if(last != null) last.next = null; //如果新連結串列不為空,last是最後一個節點,因此要保證下一個元素為空
return newHead;
}
}