您的位置:首页 > 文旅 > 旅游 > 北京app开发公司有哪些_北京软件开发工资_房地产估价师考试_cps推广联盟

北京app开发公司有哪些_北京软件开发工资_房地产估价师考试_cps推广联盟

2025/4/23 14:21:12 来源:https://blog.csdn.net/2401_88859777/article/details/147339829  浏览:    关键词:北京app开发公司有哪些_北京软件开发工资_房地产估价师考试_cps推广联盟
北京app开发公司有哪些_北京软件开发工资_房地产估价师考试_cps推广联盟

问题背景

给你一个下标从 0 0 0 开始的整数数组 n u m s nums nums。如果 i < j i < j i<j j − i ≠ n u m s [ j ] − n u m s [ i ] j - i \ne nums[j] - nums[i] ji=nums[j]nums[i],那么我们称 ( i , j ) (i, j) (i,j) 是一个 坏数对
请你返回 n u m s nums nums坏数对 的总数目。

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 1 0 5 1 \le nums.length \le 10 ^ 5 1nums.length105
  • 1 ≤ n u m s [ i ] ≤ 1 0 9 1 \le nums[i] \le 10 ^ 9 1nums[i]109

解题过程

j − i ≠ n u m s [ j ] − n u m s [ i ] j - i \ne nums[j] - nums[i] ji=nums[j]nums[i] 可以变形为 n u m s [ i ] − i ≠ n u m s [ j ] − j nums[i] − i \ne nums[j] − j nums[i]i=nums[j]j,这在形式上就和 好数对的数目 很像了,可以用类似的方式解决。

具体实现

class Solution {public long countBadPairs(int[] nums) {int n = nums.length;long res = 0;Map<Integer, Integer> count = new HashMap<>();for (int i = 0; i < n; i++) {int cur = nums[i] - i;int num = count.getOrDefault(cur, 0);res += num;count.put(cur, num + 1);}return (long) n * (n - 1) / 2 - res;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com