Leetcode 565. Array Nesting
程序员文章站
2022-06-01 21:34:22
...
"""
max = Max(current_max, max)
Use a flag array to mark if current node has been visited before.
If it is visited, then we can skip it.
Complexity is O(n) as we only go through the array once.
"""
class Solution:
"""
@param nums: an array
@return: the longest length of set S
"""
def arrayNesting(self, nums):
# Write your code here
arr_len = len(nums)
max_length = 0
flag = [False] * arr_len
for i in range(arr_len):
if flag[i] is False:
max_length = max(max_length, self.currentMax(i, nums, flag, arr_len))
return max_length
def currentMax(self, i, nums, flag, arr_len):
currentmax = 0
while True:
if i<arr_len and flag[i] is False:
flag[i] = True
currentmax += 1
i = nums[i]
else:
break
return currentmax
推荐阅读
-
【LeetCode】Two Sum & Two Sum II - Input array is sorted & Two Sum IV - Input is a BST
-
【一天一道LeetCode】#26. Remove Duplicates from Sorted Array
-
LeetCode 33. Search in Rotated Sorted Array && 81. Search in Rotated Sorted Array II
-
Leetcode 33 Search in Rotated Sorted Array
-
LeetCode·33. Search in Rotated Sorted Array
-
leetcode 33. Search in Rotated Sorted Array
-
LeetCode------Search in Rotated Sorted Array
-
LeetCode Search in Rotated Sorted Array
-
Leetcode525-Contiguous Array
-
LeetCode 525. Contiguous Array