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
    
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值