Reference: LeetCode
Difficulty: Medium
Problem
Given an array of integers, find out whether there are two distinct indices
iandjin the array such that the absolute difference betweennums[i]andnums[j]is at mosttand the absolute difference betweeniandjis at mostk.
Example:
| 1 | Input: nums = [1,2,3,1], k = 3, t = 0 | 
Analysis
Tree Set
Based on the solution in Contains Duplicate II, we use a tree set to keep k elements in ascending order. 
Then we find the closest elements of nums[i]. We do binary search for value nums[i] to find the floor and ceiling elements, and compare them with nums[i] to see if the requirement is satisfied.
Note:
- At the beginning, the tree set is empty.
- Use Longtype to solve the overflow problem.
| 1 | public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { | 
Time: $O(N\log{(\min(N, k))})$
Space: $O(\min(N, k))$
