ETH官方钱包

前往
大廳
主題

LeetCode - 2190. Most Frequent Number Following Key In an Array 解題心得

Not In My Back Yard | 2022-10-30 12:00:04 | 巴幣 0 | 人氣 197

題目連結:


題目意譯:
你被給定一個索引值從 0 開始的整數陣列 nums。你同時也被給定一整數 key,其存在於 nums 中。

對於 nums 中每個相異整數 target,統計每次 key 於 nums 中出現時其後緊接著出現 target 之次數。換句話說,請統計索引值 i 的數量,其滿足:
0 ≦ i ≦ nums.length - 2、
nums[i] == key 且
nums[i + 1] == target。

回傳有著最高次數的 target 值。測資之生成滿足有著最高次數的 target 值是唯一的。

限制:
2 ≦ nums.length ≦ 1000
1 ≦ nums[i] ≦ 1000
測資之生成滿足答案是唯一的。



範例測資:
範例 1:
輸入: nums = [1,100,200,1,100], key = 1
輸出: 100
解釋: 對於 target = 100,有兩處緊接著 key 出現的位置,其為索引值 1 和 4。
沒有其他整數緊接著 key 出現,所以我們回傳 100。

範例 2:
輸入: nums = [2,2,2,2,3], key = 2
輸出: 2
解釋: 對於 target = 2,有兩處緊接著 key 出現的位置,其為索引值 1 、 2 和 3。
對於 target = 3,只有一處索引值 4 其緊接著 key 出現的位置。
target = 2 有著緊接著 key 值之最大出現次數,所以回傳 2。


解題思維:
因為 nums[i] 的範圍是 1 ~ 1000,因此我們可以直接開一個大小 1001 的陣列來統計所有數字的出現次數。

接著就直接掃過 nums,然後每當碰到 nums[i] == key 時就把統計用的陣列之 nums[i + 1] 這個位置 + 1(代表 nums[i + 1] 出現了一次)。

最後掃過一次統計用陣列看哪個出現次數最高即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

追蹤 創作集

作者相關創作

更多創作