Given an array of integers, find out whether there are two distinct indices i and j in the array such that the absolute difference between nums[i] and nums[j] is at most t and the absolute difference between i and j is at most k.
Example 1:
Input: nums = [1,2,3,1], k = 3, t = 0
Output: true
Example 2:
Input: nums = [1,0,1,1], k = 1, t = 2
Output: true
Example 3:
Input: nums = [1,5,9,1,5,9], k = 2, t = 3
Output: false
class Solution:
     def containsNearbyAlmostDuplicate(self, nums, k, t):
         """
         :type nums: List[int]
         :type k: int
         :type t: int
         :rtype: bool
         """
         if t < 0:
             return False
         d = {}
         w = t + 1
         
         for i in range(len(nums)):
             b = nums[i] // w
             if b in d:
                 return True
             if b - 1 in d and abs(nums[i] - d[b - 1]) < w:
                 return True
             if b + 1 in d and abs(nums[i] - d[b + 1]) < w:
                 return True
             d[b] = nums[i]
             if i >= k:
                 del d[nums[i - k] // w]
         
         return False
class Solution:
     def containsNearbyAlmostDuplicate(self, nums, k, t):
         """
         :type nums: List[int]
         :type k: int
         :type t: int
         :rtype: bool
         """
         if t < 0:
             return False
         d = {}
         w = t + 1
         
         for i in range(len(nums)):
             b = nums[i] // w
             if b in d:
                 return True
             if b - 1 in d and abs(nums[i] - d[b - 1]) < w:
                 return True
             if b + 1 in d and abs(nums[i] - d[b + 1]) < w:
                 return True
             d[b] = nums[i]
             if i >= k:
                 del d[nums[i - k] // w]
         
         return False