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結尾的子串行,有則接著,沒有則需要新建長度最...