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

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

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

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
        // 判断是否重复,我想到了用Hash表
        // 把节点的元素加入,如果加入失败,则直接跳过这个
        // 后来仔细审题,发现没有比较用哈希表,因为是排序好的,直接当前轮次比较就行
        if (head == null) {
            return null;
        }
        // 要把head保留好,之后还要return head
        // p1用来记录当前节点,p2用来记录要接上去的后继节点
        ListNode p1 = head, p2 = head.next;
        while (p2 != null) {
            if (p1.val != p2.val) {
                p1.next = p2;
                p1 = p1.next;
            }
            p2 = p2.next;

        }
        p1.next = null;
        return head;
    }

}

思路其实很简单,首先保留head,头节点,之后好return。p1记为当前节点,判断p2后继节点的值是否与它相等。

这里面关键点在于,结束之后,要把p1的next置为null,否则会继续接着,没有消掉。

全部评论

相关推荐

程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
昨天 22:29
门头沟学院 Java
投递小鹅通等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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