給定一個整數 N 和一個由 0 到 N-1 的整陣列成的長度為 N 的陣列,可能包含也可能不包含所有整數,并且可能包含重復項。找到從索引 i 到索引 j 的子陣列 (i,j),使其包含陣列中的所有整數且長度最小。輸出是這樣一個子陣列的長度
示例: A=[2,1,1,3,2,1,1,3] 所以最小子陣列長度 =3 因為 A[2] 到 A[4] 包含所有數字
我的想法:
維護一個計數器陣列和兩個索引開始和結束,其中包含從陣列的開始到結束索引的元素計數。每次更新計數器的值并將結束設定為當前索引并遞增 start 直到 counter[start]>1 時,遍歷陣列。最初開始=0,結束=0
這種方法對我來說在邏輯上是正確的。我在編程測驗期間遇到了這個問題,并且確實通過了所有示例測驗用例。但它沒有通過所有隱藏的案例。我可能在這里遺漏了一些東西。
uj5u.com熱心網友回復:
決議陣列一次以計算其不同的成員。
接下來,使用 2 個指標。保留指標之間值計數的計數映射,并跟蹤指標之間不同元素的數量。
任何時候指標之間的不同元素的數量太小,前向指標前進,后向指標前進。
跟蹤并回傳具有完整不同 elt 計數的指標之間的最小距離。
uj5u.com熱心網友回復:
首先找到不同元素的數量,然后應用滑動視窗。
看起來類似于https://leetcode.com/problems/subarrays-with-k-different-integers/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369669.html
標籤:算法
上一篇:第二個或最后一個
