题目是:一直一个已排好序的链表,删除其中重复的数字,我的想法是重新建一个链表,存没有重复数字并且是已排好序的数字。
算法思想是:
首先要考虑该链表是否为空或者只有一个节点
重新建立一个链表,将原来链表的头节点设为新链表的头节点,然后依次比较原来链表的节点和他的后继节点,如果后继节点和该节点相同,则不存入新链表,若不相同则存入新建链表。代码入下:
/**
* 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;
}
}
算法优缺点:这个较其他的比较运行时间会块=快,可是所占空间会比别的大。