javaScript力扣刷题——简单链表(三)

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

自己想的笨蛋方法,新建一个链表,head循环不一样的记录到新链表。

var deleteDuplicates = function(head) {
    if(head==null||head.next==null){return head;}
    let node = new ListNode(null);
    let p = node;
    while(head!=null){
        if(p.val !=head.val){p.next = head; p = p.next;console.log(p);}
        else {
            if(head.next==null){p.next = null}
        }     
        head = head.next ;
    }
    return node.next;
};

想到了 ,每完全想对,可以让next=next.next移动后面的指针。但是为什么p的值改变,head也会变呢??????答:因为最后要返回链表头节点,p的作用相当于指针

var deleteDuplicates = function(head) {
    let p = head;
    while(p!=null&& p.next != null){
        if(p.val!=p.next.val){
            p = p.next;
        }else{
            p.next = p.next.next;
        }
    }
    return head;
};

哈希表不行,哈希是存储相同指针,不是看是否相同数值。

203. 移除链表元素

var removeElements = function(head, val) {
    if(head==null){return null}
    let p = head;
    while(p&&p.next){
        if(p.next.val == val){
            p.next = p.next.next;
        }else{
            p = p.next;
        }
    }
    if(head.val == val){head = head.next;}
    return head;
};

头节点是最后才考虑的,答案中表示可以先增加一个头节点。

11月24日链表提到此结束了。链表与数组结构不同,只能使用.next和.val,使用过的方法有哈希表法(判断相同指针而不是值);快慢指针法;递归法。

注意当前指针的copy与next的灵活运用。出现next判断是否为空。创建新节点的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值