用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;
}
}
演算法優缺點:這個較其他的比較執行時間會塊=快,可是所佔空間會比別的大。