給定乙個未排序的整數陣列,找出最長連續序列的長度、
要求演算法的時間複雜度為o(n).
示例:
輸入:[100, 4, 200, 1, 3, 2]
輸出:4
解釋:最長連續序列是[1, 2, 3, 4]。它的長度為4
思路一
先由小到大進行排序
考慮三種情況:
前後相差1,則是連續序列
前後相等,迴圈continue
最後乙個元素,break
def longestconsecutive(nums) -> int:
if nums:
nums.sort()
#print(nums)
ans = #儲存最大序列
max_seq = 1
for i, val in enumerate(nums):
#print("序號:%s 值:%s"%(i, val)) 序號從零開始
if(i == len(nums) - 1):
break;
if(nums[i] == nums[i+1]):
continue
if(nums[i] - nums[i+1] == -1):
max_seq += 1
else:
max_seq = 1
return max(ans)
else:
return 0
if __name__ == "__main__":
nums = [100, 4, 200, 1, 3, 2]
print(longestconsecutive(nums))
leetcode128 最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。建立乙個dict,如果num不在裡面就檢視左右連續長度,再給num和左右處賦值 class solution...
Leetcode 128 最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。複製 這道題目最開始大家想的肯定是sort,然後計數計算最長序列。但是要求時間複雜度為 o n 就不能用so...
LeetCode128 最長連續序列
原題目給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。題目分析 方法一 排序直接查詢法 先對陣列進行快排,然後從開始開始比較前後兩者是否相差1,相差1則計數...