题解 | #删除链表中重复的结点#

删除链表中重复的结点

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

思路:排除相同元素的思路,双指针法。因为是排序的,先是遇到两个相同的node(if),然后将所有相同的node排除(while)。
/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead) {

        //空链表
        if (pHead == null) {
            return null;
        }

        //在链表前加一个表头
        ListNode temp = new ListNode(0);
        temp.next = pHead;
        ListNode cur = temp;

        while (cur.next != null && cur.next.next != null) {
            //遇到两个相邻节点的值相同
            if (cur.next.val == cur.next.next.val) {
                int tempVal = cur.next.val;
                //将所有相同的都跳过
                while (cur.next != null && cur.next.val == tempVal) {
                    cur.next = cur.next.next;
                }
            } else {
                cur = cur.next;
            }
        }
        return temp.next;
    }
}

剑指offer刷题总结 文章被收录于专栏

本专栏是本人刷剑指offer的记录总结,也欢迎大家评论区留言讨论交流~

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 13:38
8月实习会变多吗现在还没找到实习该怎么办...回复的hr好少
码农索隆:3-4月就要开始找,基本上6月份就发offer,7月初已经开始暑期实习了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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