LeetCode 565. 数组嵌套
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 565. 数组嵌套
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
索引從0開始長度為N的數組A,包含0到N - 1的所有整數。
找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以下的規則。
假設選擇索引為i的元素A[i]為S的第一個元素,S的下一個元素應該是A[A[i]],之后是A[A[A[i]]]... 以此類推,不斷添加直到S出現重復的元素。
示例 1: 輸入: A = [5,4,0,3,1,6,2] 輸出: 4 解釋: A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2.其中一種最長的 S[K]: S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}提示: N是[1, 20,000]之間的整數。 A中不含有重復的元素。 A中的元素大小在[0, N-1]之間。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/array-nesting
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 把走過的標記成 -1
- 每次從沒有走過的地方開始,記錄長度
36 ms 29.3 MB
class Solution:# py3def arrayNesting(self, nums: List[int]) -> int:maxlen = 0for i in range(len(nums)):if nums[i] == -1:continueidx = ilength = 0while idx != -1 and nums[idx] != -1:length += 1prev = idxidx = nums[idx]nums[prev] = -1maxlen = max(maxlen, length)return maxlen172 ms 15.5 MB
總結
以上是生活随笔為你收集整理的LeetCode 565. 数组嵌套的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 490. 迷宫(BFS
- 下一篇: LeetCode 1293. 网格中的最