chenfy27的刷题记录

导航

leetcode2426 满足不等式的数对个数

给定两个大小为n的数组nums1和nums2以及整数diff,统计满足以下条件的数对(i,j)的个数:0<=i<j<=n-1,并且nums1[i]-nums1[j]<=nums2[i]-nums2[j]+diff
2<=n<=1e5; -1e4<=nums1[i],nums2[i]<=1e4; -1e4<=diff<=1e4

分析:先对条件做下变形,将下标相同的移到同一侧,得到:nums1[i]-nums2[i]<=nums1[j]-num2[j]+diff,如果记A[i]=nums1[i]-nums2[i],就转化成一个类似逆序对的统计问题,这里用平衡树来统计。

// Treap模板...

class Solution {
public:
    long long numberOfPairs(vector<int>& nums1, vector<int>& nums2, int diff) {
        int n = nums1.size();
        Treap<int> tp;
        long long ans = 0;
        for (int i = 0; i < n; i++) {
            ans += tp.lecnt(nums1[i] - nums2[i] + diff);
            tp.insert(nums1[i] - nums2[i]);
        }
        return ans;
    }
};

posted on 2024-03-16 11:16  chenfy27  阅读(17)  评论(0)    收藏  举报