搜索
写经验 领红包

统计算平均数怎么算(统计求平均数的方法)

导语:【竞赛题】6355. 统计公平数对的数目

统计算平均数怎么算(统计求平均数的方法)

题目:

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lower 和 upper ,返回 公平数对的数目 。

如果 (i, j) 数对满足以下情况,则认为它是一个 公平数对 :

0 <= i < j < n,且lower <= nums[i] + nums[j] <= upper

示例 1:

输入:nums = [0,1,7,4,4,5], lower = 3, upper = 6输出:6解释:共计 6 个公平数对:(0,3)、(0,4)、(0,5)、(1,3)、(1,4) 和 (1,5) 。示例 2:

输入:nums = [1,7,9,2,5], lower = 11, upper = 11输出:1解释:只有单个公平数对:(2,3) 。

提示:

1 <= nums.length <= 10^5nums.length == n-10^9 <= nums[i] <= 10^9-10^9 <= lower <= upper <= 10^9

java代码:
class Solution {    public long countFairPairs(int[] nums, int lower, int upper) {        Arrays.sort(nums);        int n = nums.length;        long c = 0;        int l = 0;        int r = n-1;        while(l<r) {            int temp = nums[l]+nums[r];            if(temp<lower) {                l++;            }else if(temp>upper) {                r--;            }else {                c++;                int t2 = r;                r--;                while(l<r) {                    if(nums[r]==nums[r+1]) {                        c++;                        r--;                    }else {                        temp = nums[l]+nums[r];                        if(temp<lower) {                            break;                        }else {                            c++;                            r--;                        }                    }                }                l++;                r = t2;            }        }        return c;    }}

本文内容由小梓整理编辑!