自学Java之LinkedList(二)

继续LinkedList专题...

  • 237. Delete Node in a Linked List

class Solution {
    public void deleteNode(ListNode node) {
        // ListNode prev=head;
        // ListNode cur=prev.next;
        // while(cur.val!=node.val){
        //     prev=prev.next;
        //     cur=cur.next;
        // }
        // prev.next=cur.next;
        // head=prev;
        node.val=node.next.val;
        node.next=node.next.next;
    }
}

说是删除一个节点,只给了节点值,没给原链表,有点不明所以。

用Java的最高赞解答a掉,然后给了这道题的第4603个踩...

  • 83. Remove Duplicates from Sorted List

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode prev=head;
        if(prev==null){
            return null;
        }
        if(prev.next==null){
            return head;
        }
        ListNode cur=prev.next;
        while(cur!=null){
            if(prev.val==cur.val){
                prev.next=cur.next;
                cur=prev.next;
            }
            else{
                prev=prev.next;
                cur=cur.next;
            }
        }
        return head;
    }
}

链表去重,经过昨天的复习已经很简单,秒过

  • 141. Linked List Cycle

判断一个链表是否有环,挖到一个知识点!

fast-slow pointers,即快慢指针问题:

slow = slow.next;
fast = fast.next.next;

假设快慢指针原来都指向头结点,这样的话,fast指针移动速度就是slow指针的两倍。

常用场景

常被用来在O(N)时间复杂度O(1)空间复杂度的情况下,解决以下这些类型的问题:

  • 单向链表未知长度时定位到倒数第K个节点
  • 链表判环
  • 找到链表中点

(具体解析参考https://blog.csdn.net/u014179251/article/details/89361887

参考高赞答案: 

public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode slow=head;
        ListNode fast=head;
        
        while(fast!=null&&fast.next!=null){
            slow=slow.next;
            fast=fast.next.next;
            if(slow==fast)
                return true;
        }        
        return false;
    }
}

今天的3题有点水,,,明天继续

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值