주어진 정수 배열이 정렬되지 않은 상태로, 가장 긴 연속 시퀀스의 길이를 찾을 수 있습니다.
알고리즘 복잡도 시간 요건은 O (N)이다.
예 :
입력 : 100, 4, 200, 1, 3, 2]
출력 : 4가
가장 긴 연속적인 시퀀스가 [1, 2, 3, 4] 설명한다. 그것의 길이는 4입니다.
폭력 타임 아웃. . .
클래스 해결책 : DEF -> longestConsecutive (리스트 [INT] 자기, nums) INT : longestSequence = 0 에 대한 NUM 에 nums : curNum = NUM 연속 = 1 동안 curNum +1 에서 nums : curNum + = 1 연속 + = 1 longestSequence = 최대 (longestSequence, 행진) 반환 longestSequence
먼저 개수가 1 미만인지 여부를 결정하기 전에 순서대로 목록을 정렬, 마지막 하나는 일련의 연속적인 긴 부 시간의 최종 비율을 다시 언급 될 수있다
1 급 해결책 : 2 DEF longestConsecutive (자기, nums리스트 [INT]) -> INT : 3 경우 되지 nums : 4 창 0 5 nums.sort () 6 longestSequence = 1 7 curStreak 1 = 8 대 I 의 범위 (1 렌 (nums)) 9 경우 nums [I] = nums [I-1! ] : 10 의 경우 nums [I] == nums [I-1] +1 : 11 curStreak + 1 = 12 다른 : 13 longestSequence = 최대 (longestSequence, curStreak) 14 curStreak = 1 개 15 리턴 맥스 (longestSequence, curStreak)