class
solution
:def
longestconsecutive
(self, nums: list[
int])-
>
int:
nums_set =
set(nums)
result =
0for i in
range
(len
(nums)):
# count = 1
# a = nums[i]
# while a + 1 in nums_set:
# a += 1
# count += 1
# a = nums[i]
# while a - 1 in nums_set:
# a -= 1
# count += 1
# result = max(result, count)
if nums[i]-1
in nums_set:
continue
count =
1 a = nums[i]
while a +
1in nums_set:
a +=
1 count +=
1 result =
max(result, count)
return result
被注釋的部分就是前面提到的超時方案。雖然最後這個方法的用時也挺長的,但是總算是做出來了,而且這種方法的時間複雜度看起來也沒有很離譜。但是看到很多並查集的方法都說並查集的查詢效率相當高,因此今天在這裡立乙個flag,要在乙個月內搞懂並查集並寫一篇博文來證明自己懂了,加油! 每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...
LeetCode每日一題(題139)
題目 題目大意 給出乙個字串s和乙個字串陣列words,判斷s是否能夠拆分成多個words中的字串。分析 這道題比較簡單的方式應該是採用動態規劃來做。對於任意乙個字串中的區間,可以判斷該區間組成的字串是否在字典中,如果是,則這個區間的真假取決於前面那個區間的真假。給出狀態轉移方程dp i dp j ...