220. Contains Duplicate III

Description

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.

Constraints

  • 0 <= nums.length <= 2 * 104

  • -231 <= nums[i] <= 231 - 1

  • 0 <= k <= 104

  • 0 <= t <= 231 - 1

Approach

Examples

Input: nums = [1, 2, 3, 1], k = 3, t = 0

Output: true

Solutions

/**
 * Time complexity : 
 * Space complexity : 
 */

class Solution {
    public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
        if(nums == null || nums.length < 2 || k < 0 || t < 0) {
            return false;
        }
        int n = nums.length;
        for(int i = 0; i < n-1; i++) {
            for(int j = i+1; j < n; j++) {
                if(Math.abs(1L * nums[i]-nums[j]) <= t && (j-i) <= k) {
                    return true;
                }
            }
        }
        return false;
    }
}

Follow up

Last updated

Was this helpful?