1. 程式人生 > >用Java程式碼刪除一個已排好序連結串列中重複的數字

用Java程式碼刪除一個已排好序連結串列中重複的數字

題目是:一直一個已排好序的連結串列,刪除其中重複的數字,我的想法是重新建一個連結串列,存沒有重複數字並且是已排好序的數字。

演算法思想是:

首先要考慮該連結串列是否為空或者只有一個節點

重新建立一個連結串列,將原來連結串列的頭節點設為新連結串列的頭節點,然後依次比較原來連結串列的節點和他的後繼節點,如果後繼節點和該節點相同,則不存入新連結串列,若不相同則存入新建連結串列。程式碼入下:

/**
 * 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) {
        if(head==null||head.next==null){
            return head;
        }
        ListNode newNode=new ListNode(head.val);
        ListNode start=newNode;
        ListNode current=head.next;
        while(current!=null){
            if(current.val!=start.val){
                ListNode node=new ListNode(current.val);
                start.next=node;
                start=node;
            }
            current=current.next;
        }
        return newNode;
    }
}

演算法優缺點:這個較其他的比較執行時間會塊=快,可是所佔空間會比別的大。