LeetCode - 220 解題紀錄 / September LeetCoding Challenge Day 2
題目: LeetCode - 220. Contains Duplicate III
題目說明
給一個陣列,求對於陣列中的某個元素的左右各 k
個元素中是否存在兩者的差小於等於 t
的元素。
解題思路
為了計算方便,我們先確定 j
的位置,之後再往前找 i
,最簡單的方法為兩個迴圈,但是這樣會超時,所以必須使用二分搜尋,這裡我們使用 lower_bound()
這個函式達成二分搜尋的效果,使用 Multiset 紀錄前面 k
個元素,之後使用此函式找到第一個大於等於 nums[j] - t
的值,若有找到並且這個值會小於等於 nums[j] + t
,表示兩者的差會小於等於 t
,回傳 True。
參考解法
1 | class Solution { |
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論