leetcode 659 分割陣列為連續子串行

2021-10-11 09:00:40 字數 892 閱讀 2595

659. 分割陣列為連續子串行

這個題目利用貪心和hash來解決

貪心是保證所獲得的序列能夠長,hash用來快速判斷和獲得該數字的資訊

對於乙個數字val,首先應該判斷它是否能夠接到乙個序列當中(貪心),若不能夠接入,則判斷其能否生成乙個最小長度為3的序列。若兩種方式都不能滿足,那麼就下結論,存在乙個不能生成要求的序列。最後若遍歷完,則返回true

class

solution

else

}//遍歷整個陣列進行判斷

for(integer val : nums)

//對這個數字的個數-1(消耗了乙個)(進入序列)

numcount.

put(val, numcount.

get(val)-1

);//首先判斷是否有以val-1結尾的序列(是否有,且沒有被消耗)

if(endnum.

containskey

(val-1)

&&endnum.

get(val-1)

>0)

else

}//有val+1和val+2,那麼將其加入佇列

else

if(numcount.

containskey

(val+1)

&&numcount.

get(val+1)

>

0&&numcount.

containskey

(val+2)

&&numcount.

get(val+2)

>0)

else

}else

}return

true;}

}

LeetCode659 分割陣列為連續子串行

目錄 一 題目 二 解題思路 三 給你乙個按公升序排序的整數陣列 num 可能包含重複數字 請你將它們分割成乙個或多個子串行,其中每個子串行都由連續整數組成且長度至少為 3 如果可以完成上述分割,則返回 true 否則,返回 false 示例 1 輸入 1,2,3,3,4,5 輸出 true 解釋 ...

659 分割陣列為連續子串行

貪心 按數字大小的順序,盡量將當前數字與之前產生的數鏈連線在一起。考慮1 2 3 4 4 5 5 6這樣一組數字,遍歷到第二個4的時候,就應該檢測能不能再組成一條新的數鏈,這時就把6給從count中減掉了,盡可能避免剩下短鏈。class solution else if tails.get x 0 ...

659 分割陣列為連續子串行

給你乙個按公升序排序的整數陣列 num 可能包含重複數字 請你將它們分割成乙個或多個子串行,其中每個子串行都由連續整數組成且長度至少為 3 如果可以完成上述分割,則返回 true 否則,返回 false 貪心演算法 思路分析 分析i時,先查詢有沒有以i 1結尾的子串行,有則接著,沒有則需要新建長度最...