给你一个整数数组nums和两个整数kt。请你判断是否存在两个不同下标ij,使得abs(nums[i]-nums[j]) <= t,同时又满足abs(i-j) <= k

如果存在则返回true,不存在返回false

示例 1:

输入:nums = [1,2,3,1], k = 3, t = 0
输出:true

示例 2:

输入:nums = [1,0,1,1], k = 1, t = 2
输出:true

示例 3:

输入:nums = [1,5,9,1,5,9], k = 2, t = 3
输出:false

提示:

  • 0 <= nums.length <= 2 * 10^4
  • -2^31 <= nums[i] <= 2^31 - 1
  • 0 <= k <= 10^4
  • 0 <= t <= 2^31 - 1

1、暴力
python解答:

class Solution:
    def containsNearbyAlmostDuplicate(self, nums: List[int], k: int, t: int) -> bool:
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                if abs(nums[i]-nums[j]) <= t and abs(i-j) <= k:
                    return True
        return False

时间复杂度:O(n^2)
空间复杂度:O(1)

最后修改日期: 2021年8月30日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。