LeetCode —— 链表相关(206、141)

0. 数据结构定义

  • 链表节点:

    class ListNode(object):
        def __init__(self, x):
            self.val = x
            self.next = None
    

1. 链表

  • 206,翻转链表,206. Reverse Linked List

    def reverseList(head):
    	cur, prev = head, None
    	while cur:
    		cur.next, prev, cur = prev, cur, cur.next
    	return prev
    			# 跳出while循环时,cur 为 None
    
  • 141,检测链表是否有环:Linked List Cycle

    • 链表不可能有多个环,因为一个节点不能有两个后继指针;
    • 可行方案:
      • 1、遍历是否能够出现 NIL 空指针;
      • 2、使用 Set 存储已访问过的节点,如果当前待遍历的节点已存储在Set集合中,则证明有环;
      • 3、快慢指针:慢指针一次走一步,快指针一次走两步,如果有环,两者一定会相遇;
    def hasCycle(head):
    	slow = fast  = head
    	while slow and fast and fast.next:
    		slow = slow.next
    		fast = fast.next.next
    		if slow == fast:
    			return True
    	return False
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值