题目描述:删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次   
         
      
在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。
 
  
                          例如: 
   给出的链表为1->1->2,返回1->2.  
   给出的链表为1->1->2->3->3,返回1->2->3. 
   个人思路:设置辅助指针temp,设置新的链表头head1==head。从链表的开始,对比指针链表的val与指针链表的下一个链表的值, 
   如果相同,辅助指针后移一位, 
   如果不同,将head1.next=temp.next;
head=head1.next;
 head=head1.next;
  代码实现通过率为15%,用例:
{}
对应输出应该为:
{}
你的输出为:
java.lang.NullPointerException
 {}
对应输出应该为:
{}
你的输出为:
java.lang.NullPointerException
import java.util.*;
/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */
public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        if(head.next==null)
            return head;
        if(head.next.next==null)
            return head;
        ListNode temp=head.next;
        ListNode head1=head;
        while(head.next!=null&&head!=null){
            if(temp.next.val==temp.val){
                temp=temp.next;
            }
            else{
            head1.next=temp.next;
            head=head1.next;
            }
        }   
        return head1;
    }
} 高赞思路相似,设置cur,利用cur遍历找前后不重复的节点。   代码实现 
 import java.util.*;
/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */
public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        ListNode cur=head;
        while(cur!=null){
            while(cur.next!=null&&cur.val==cur.next.val){
                ListNode temp=cur.next.next;    //这里牵扯到内存泄漏的问题,原回答为  cur.next=cur.next.next;
                 cur.next.next=null;                  cur.next=temp;
            }
            cur=cur.next; 
        }
        return head;
    }
} 内存泄漏:在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。

京公网安备 11010502036488号