专栏首页用户7873631的专栏leetcode:83 删除排序链表中的重复元素

leetcode:83 删除排序链表中的重复元素

电脑网络不行啊。。。。 题目这么垃圾就不用解释了把。 因为有序,所以相邻.

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var deleteDuplicates = function(head) {
    let p=head;
    while(p&&p.next)
    {
        if(p.val===p.next.val)
        {
            p.next=p.next.next;
        }
        else{
            p=p.next;
        }
        
    }
    return head;
};

开始遍历链表的开始。

let p=head;

当前节点的值等于下一个的值就删除下一个节点的元素.

if(p.val===p.next.val)
{
	p.next=p.next.next;
}

问题? 如果next没有值的话,会报错的。 因为要相等啊,比较啊,有值才能比较是吧。 那为什么p.next=p.next.next;如果p.next.next;没有值为什么不会报错?因为他不是比较。比较必须是值与值比较的啊。 所以

 while(p&&p.next)

然后让p遍历下去。 问题? 如果有三个值都相同怎么办? 在循环一次,然后是p再跟p.next的元素对比,比较。。为什么还是p.next; 因为他被p.next.next;覆盖了呀。所以p.next是原本的第三个元素了啊. 最后是: 遍历完后就返回链表的头部了呀,代表结束了啊.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • leetcode:2 两数相加

    难以理解的点: 它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 意思:每一个数字在链表中是逆序的方式存储的,并且每一个节...

    用户7873631
  • 攻陷leetcode,你我行!!!(不在话下),小意思666

    题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且...

    用户7873631
  • leetcode:141 环形链表

    思路;一快一慢两个指针在同一起点,快的走两步,慢的一步。 直到快的快慢的一圈正好形成一个圆圈就是环形链表了.

    用户7873631
  • leetcode: 206. Reverse Linked List

    JNingWei
  • c/c++补完计划(七): 哨兵节点

    sean_yang
  • 吃透洋葱模型

    作者:掘金@苏里 https://juejin.im/post/6844904025767280648

    zz_jesse
  • 【玩转腾讯云】python next函数

    python 3.x内置函数next可以从迭代器中检索下一个元素或者数据,可以用于迭代器遍历,使用的时候注意会触发 StopIteration 异常!

    猿说编程[Python和C]
  • 模式匹配KMP算法

    匹配到j=5时失效了,BF算法里我们会使i=1,j=0,再看s的第i位开始能不能匹配,而KMP算法接下来就去比较T[2](next[5]=2)和S[5]

    饶文津
  • 单链表反转的分析及实现

    我先画一个单链表,这个单链表有4个元素。我的思路就是,每次把第二个元素提到最前面来。比如下面是第一次交换,我们先让头结点的next域指向结点a2,再让结点a1...

    猿人谷
  • leetcode: 86. Partition List

    JNingWei

扫码关注云+社区

领取腾讯云代金券