leetcode 220 存在重複元素III

2021-10-02 04:50:32 字數 530 閱讀 2735

class solution 

if(setsize==k)

window.insert((long)nums[end]);

setsize++;

end++;

}return false;

}};

快還是挺快的,記憶體消耗挺大。

本質還是滑動視窗,視窗裡放k個數,然後第k+1個數找一下視窗裡有沒有和自己絕對值之差小於t的,有則查詢成功返回true。沒有的話把這個數插入視窗,然後把最早放進視窗的數刪掉。

視窗內為了加快查詢速度用了multiset。set和map都是用紅黑樹實現的,查詢效率在logn。

之前和同學吐槽為什麼set有upperbound(大於key的最小值)和lowerbound(大於等於key的最小值)卻不提供小於key的最大值。做這題突然明白了,蠢到自己了。因為set內部是從小到大有序的,找到大於等於key的最小值,再給iterator--就是小於key的最大值了……

leetcode上還介紹了一種桶排序+雜湊的方法,效率也差不多。

leetcode 220 存在重複元素 III

1.題目 在整數陣列 nums 中,是否存在兩個下標 i 和 j,使得 nums i 和 nums j 的差的絕對值小於等於 t 且滿足 i 和 j 的差的絕對值也小於等於 如果存在則返回 true,不存在返回 false。輸入 nums 1,5,9,1,5,9 k 2,t 3 輸出 false2....

220 存在重複元素 III

給定乙個整數陣列,判斷陣列中是否有兩個不同的索引 i 和 j,使得nums i 和nums j 的差的絕對值最大為 t,並且 i 和 j 之間的差的絕對值最大為 示例 1 輸入 nums 1,2,3,1 k 3,t 0輸出 true示例 2 輸入 nums 1,0,1,1 k 1,t 2輸出 tru...

220 存在重複元素 III

給定乙個整數陣列,判斷陣列中是否有兩個不同的索引 i ii 和 j jj,使得 num s i nums i nums i 和 num s j nums j nums j 的差的絕對值最大為 t tt,並且 i ii 和 j jj 之間的差的絕對值最大為 示例 1 輸入 nums 1 2,3 1 k...