做题是一种感觉,leetcode感觉总结

73 阅读1分钟

基于目标关系的数组问题解法总结

在处理数组问题时,当问题中描述元素之间存在某种确定关系时,可以选择不同的解法来高效求解:

  1. 基于特定关系的匹配问题

  2. 目标为范围的匹配问题

    • 如果目标是一段范围(如2563. Count the Number of Fair Pairs截屏2024-11-28 下午8.32.44.png),可以通过 upper_boundlower_bound 来快速统计满足范围的配对,极大简化实现和提升性能。
public:
    long long countFairPairs(vector<int>& nums, int lower, int upper) {
        long long count = 0;
        sort(nums.begin(), nums.end());
        // lower - nums[i] <= nums[j] <= upper - nums[j]
        for(int j = 0; j < nums.size(); j++){
            auto lb = lower_bound(nums.begin(), nums.begin() + j, lower - nums[j]);
            auto ub = upper_bound(nums.begin(), nums.begin() + j, upper - nums[j]);
            count += ub - lb;
        }
        return count;
    }
};

链表问题多画图。按照b站上灵茶山艾府的链表题画图。分单数和双数俩种情况分别画图。