题解 | 删除有序链表中重复的元素-I

删除有序链表中重复的元素-I

https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        if (head==null){
            return null;
        }
        ListNode cur = head;
        ListNode m;
        //  1111233
        while(cur!=null&& cur.next!=null){
            while(cur.next!=null && cur.val==cur.next.val){
                m = cur.next.next;
                cur.next = m;
            }
            System.out.print(cur.val);
            cur = cur.next;
            
        }
        return head;
    }
}

这是正确的代码,之前出现了一个小问题,是一直用一个next_node 保存cur的下一节点,但是在内层会更新next_node,在外层也会却没有更新next_node。下面是正确的代码。

总计一下:上面的代码没有只用next_node,明显上面的代码要简洁很多,而且也不容易出错。因此,后面写算法的时候能少用节点就少用节点。

同时在用一个节点时,nextnode是cur的下一个节点,在任何情况下,更新cur都要去更新nextnode,特别是在外层循环,不要忽略了。

在cur不为空的情况下,才能访问cur的next和cur.next.val 一定要记住了

对于需要删除的节点,无需将其next再设置为空。

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        if (head==null){
            return null;
        }
        ListNode cur = head;
        ListNode next_node = head.next;
        ListNode m;
        //  1111233
        while(cur!=null&& next_node!=null){
            while(next_node!=null && cur.val==next_node.val){

                m = next_node.next;
                cur.next = m;
                next_node = cur.next;
            }
            cur = cur.next;
            if (cur!=null){
            next_node = cur.next;


            }
            
        }
        return head;
    }
}
全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务