leetcode2006_go_差的绝对值为K的数对数目

题目

给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。

|x| 的值定义为:

如果 x >= 0 ,那么值为 x 。

如果 x < 0 ,那么值为 -x 。

示例 1:输入:nums = [1,2,2,1], k = 1 输出:4

解释:差的绝对值为 1 的数对为:

- [1,2,2,1]

- [1,2,2,1]

- [1,2,2,1]

- [1,2,2,1]

示例 2:输入:nums = [1,3], k = 3 输出:0

解释:没有任何数对差的绝对值为 3 。

示例 3:输入:nums = [3,2,1,5,4], k = 2 输出:3

解释:差的绝对值为 2 的数对为:

- [3,2,1,5,4]

- [3,2,1,5,4]

- [3,2,1,5,4]

提示:1 <= nums.length <= 200

1 <= nums[i] <= 100

1 <= k <= 99

解题思路分析

1、暴力法;时间复杂度O(n^2),空间复杂度O(1)

leetcode2006_go_差的绝对值为K的数对数目

func countKDifference(nums []int, k int) int {
   res := 0
   for i := 0; i < len(nums); i++ {
      for j := i + 1; j < len(nums); j++ {
         if nums[i]-nums[j] == k || nums[j]-nums[i] == k {
            res++
         }
      }
   }
   return res
}

2、哈希;时间复杂度O(n),空间复杂度O(n)

func countKDifference(nums []int, k int) int {
   res := 0
   m := make(map[int]int)
   for i := 0; i < len(nums); i++ {
      m[nums[i]]++
   }
   for i := 0; i < len(nums); i++ {
      res = res + m[nums[i]-k]
   }
   return res
}

总结

Easy题目,直接遍历即可

展开阅读全文

页面更新:2024-04-22

标签:数目   复杂度   遍历   整数   数组   示例   暴力   题目   思路   提示   时间   科技   空间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top