class Solution: # @param num, a list of integer # @return an integer def longestConsecutive(self, num): num=set(num) maxLen=0 while num: n=num.pop() i=n+1 l1=0 l2=0 while i in num: num.remove(i) i+=1 l1+=1 i=n-1 while i in num: num.remove(i) i-=1 l2+=1 maxLen=max(maxLen,l1+l2+1) return maxLen
Nice one. I wrote my own based on your idea, main difference being that I don't use extra length variables. I just find the first and last number in the streak and calculate the length as last-first+1:
class Solution: def longestConsecutive(self, nums): nums = set(nums) maxlen = 0 while nums: first = last = nums.pop() while first - 1 in nums: first -= 1 nums.remove(first) while last + 1 in nums: last += 1 nums.remove(last) maxlen = max(maxlen, last - first + 1) return maxlen
Nice solution, but it is O( n^2), each i in num is O(n).
Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.