leetcode 3583

3583: 统计特殊三元组

三变量问题,一般枚举中间的变量最简单。

为什么?对比一下:

  • 枚举 i,后续计算中还需保证 j<k。
  • 枚举 j,那么 i 和 k 自动被 j 隔开,互相独立,后续计算中无需关心 i 和 k 的位置关系。

思路:

由于答案不超过 n⋅10^5⋅10^5≤10^15,可以只在返回时取模。

复制代码
class Solution {
public:
    int specialTriplets(vector<int>& nums) {
        constexpr int MOD=1'000'000'007;
        unordered_map<int,int> suf;
        for(int x :nums) suf[x]++;

        long long ans=0;
        unordered_map<int,int> pre;
        for(int x :nums){
            suf[x]--;
            // 现在 pre 中的是 [0,j-1],suf 中的是 [j+1,n-1]
            ans+=(long long)pre[x*2]*suf[x*2];
            pre[x]++;
        }

        return ans%MOD;
    }
};
相关推荐
泯泷11 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷11 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷11 小时前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷11 小时前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法
萌动的小火苗11 小时前
数据结构面试题【无答案】
c语言·开发语言·数据结构·链表
Asize12 小时前
54. 螺旋矩阵
算法
Asize12 小时前
73. 矩阵置零
算法
微露清风12 小时前
快慢指针算法学习记录
学习·算法·快慢指针
benchmark_cc13 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源
sel_913 小时前
【PEFT】参数高效微调(PEFT)技术详解:从原理到 LoRA/QLoRA 实战
人工智能·python·深度学习·算法·机器学习·参数高效微调