leetcode - 141--循環リンクリスト、

件名の説明:

リストを指定すると、リストがリングかどうかが決定されます。リングを与えられたリストを表示するために、我々は、POS整数(インデックスは0から始まる)リストの位置を表すために、リストの最後に接続されています。posが-1の場合、リングがこのリストに含まれていません。

例1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

ここに画像を挿入説明
例2:

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

ここに画像を挿入説明
例3:

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

ここに画像を挿入説明


問題解決のアイデア:

ダブルポインタの速度を使用し、高速の手をそれぞれ2つのステップ、スローポインタによって各ステップを取ります。ポインタがすばやくなし来ない場合は、上記フローを横断し、全くリング(連鎖停止の内側環状不在)が存在しません。ポインタとして高速と低速のポインタが、その後、リングがあった場合


コード:

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

class Solution(object):
    def hasCycle(self, head):

        if head == None: return False
        slow = head
        fast = head.next
        while fast!= slow:
            if fast == None or fast.next == None or fast.next.next == None:
                return False

            slow = slow.next
            fast = fast.next.next
        return True

参考リンク:
leetcodeエンドレスチェーン-141-


トピック出典:
https://leetcode-cn.com/problems/linked-list-cycle

公開された378元の記事 ウォン称賛43 ビュー40000 +

おすすめ

転載: blog.csdn.net/weixin_43283397/article/details/105133256