美文网首页
剑指 Offer II 057. 值和下标之差都在给定的范围内

剑指 Offer II 057. 值和下标之差都在给定的范围内

作者: 邦_ | 来源:发表于2022-07-01 14:48 被阅读0次

最基本的思路 时间上消耗有点高

    func containsNearbyAlmostDuplicate(_ nums: [Int], _ k: Int, _ t: Int) -> Bool {
    let count = nums.count
    if count == 0 {
        return false
    }
      for i in 0..<count-1 {
       for j in i+1..<count {
          if abs(nums[i] - nums[j]) <= t {
              if abs(i - j) <= k {
                  return true
              }
          }
       }
      }
      return false
    }

判断条件上可以优化下 因为题目说下标i和j是不同的。所以k不会为0

 if count <2 || k == 0 {
        return false
    }

又因为i-j的绝对值小于等于k。内层循环上可以优化和过滤一部分
又因为j是从i+1开始的。 可以省略一个abs函数调用
但是时间上还是消耗还是很高

      func containsNearbyAlmostDuplicate(_ nums: [Int], _ k: Int, _ t: Int) -> Bool {
    if k == 0 {
        return false
    }
    let count = nums.count
    if count < 2 {
        return false
    }
      for i in 0..<count-1 {
       for j in i+1..<count  {
           if j - i <= k {
              if abs(nums[i] - nums[j]) <= t {
               return true
            }         
        }
       }
      }
      return false
    }

相关文章

网友评论

      本文标题:剑指 Offer II 057. 值和下标之差都在给定的范围内

      本文链接:https://www.haomeiwen.com/subject/fybemrtx.html