1. 程式人生 > 其它 >力扣LeetCode #83 刪除排序連結串列中的重複元素(DeleteDuplicates)

力扣LeetCode #83 刪除排序連結串列中的重複元素(DeleteDuplicates)

技術標籤:連結串列資料結構演算法javaleetcode

- 題目描述

給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。

- 示例

  • 示例 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; } }