2025-12-09 学习日记

发布于 2025-12-09 12:00 304 字 2 min read 手写 每个字都是我自己敲的。

2025-12-24 学习日记2025-12-17 学习日记2025-12-14 学习日记2025-12-09 学习日记2025-12-08 学习日记2025-12-07 学习日记2025-12-06 学习日记2025-12-05 学习日记2025-12-04 学习日记2025-12-03 学习日记2025-12-02 学习日记2025-12-01 学习日记2025-11-30 学习日记2025-11-29 学习日记2025-11-28 学习日记2025-11-27 学习日记2025-11-26 学习日记2025-11-25 学习日记2025-11-24 学习日记2025-11-23 学习日记2025-11-22 学习日记2025-11-21 学习日记2025-11-20 学习日记2025-11-19 学习日记2025-11-18 学习日记2025-11-17 学习日记2025-11-16 学习日记2025-11-15 学习日记2025-11-14 学习日记2025-11-13 学习日记2025-11-12 学习日记2025-11-11 学习日记2025-11-10 学习日记2025-11-09 学习日记2025-11-08 学习日记2025-11-07 学习日记2025-11-06 学习日记2025-11-05 学习日记2025-11-04 学习日记2025-11-03 学习日记2025-11-02 学习日记2025-11-01 学习日记2025-10-31 学习日记2025-10-30 学习日记2025-10-29 学习日记2025-10-28 学习日记2025-10-27 学习日记2025-10-26 学习日记2025-10-25 学习日记2025-10-24 学习日记2025-10-23 学习日记2025-10-22 学习日记2025-10-21 学习日记2025-10-20 学习日记2025-10-19 学习日记2025-10-18 学习日记2025-10-17 学习日记2025-10-16 学习日记2025-10-15 学习日记2025-10-14 学习日记2025-10-13 学习日记2025-10-11 学习日记2025-10-10 学习日记2025-10-09 学习日记2025-10-03 学习日记2025-10-02 学习日记2025-10-01 学习日记2025-09-30 学习日记2025-09-29 学习日记2025-09-28 学习日记2025-09-27 学习日记2025-09-26 学习日记2025-09-25 学习日记2025-09-24 学习日记2025-09-23 学习日记2025-09-22 学习日记2025-09-21 学习日记2025-09-20 学习日记2025-09-18 学习日记2025-09-17 学习日记2025-09-16 学习日记2025-09-15 学习日记2025-09-14 学习日记2025-09-13 学习日记2025-09-12 学习日记2025-09-11 学习日记2025-09-10 学习日记2025-09-09 学习日记2025-09-08 学习日记2025-09-04 学习日记2025-09-03 学习日记2025-09-02 学习日记2025-09-01 学习日记2025-08-31 学习日记2025-08-29 学习日记2025-08-28 学习日记2025-08-27 学习日记2025-08-26 学习日记2025-08-25 学习日记2025-08-24 周记2025-08-23 学习日记2025-08-22 学习日记2025-08-21 学习日记2025-08-20 学习日记2025-08-19 学习日记2025-08-18 学习日记2025-08-17 周记2025-08-16 学习日记2025-08-15 学习日记2025-08-14 学习日记2025-08-13 学习日记2025-08-12 学习日记2025-08-11 学习日记
今日学习记录 1. 3583. 统计特殊三元组 关键词: 问题分析: 找到数组中 0<i<j<k,且的数量 核心思路: 先预处理所有数字的出现次数,采取枚举中间的数的做法,同时记录左端数组中数字的出现次数,预处理的 map 就右边的数量,每次枚举时,左端数量增多,右边减少,ans += ; 一次遍历(枚举右,维护左) 思考,我们不仅可以枚举中间,我们可以枚举右边,要找到,当右端为 x...

今日学习记录

1. 3583. 统计特殊三元组

关键词:数组 哈希表 问题分析: 找到数组中 0<i<j<k,且nums[i]==nums[j]*2==nums[k]的数量

核心思路:

枚举

先预处理所有数字的出现次数,采取枚举中间的数的做法,同时记录左端数组中数字的出现次数,预处理的 map 就右边的数量,每次枚举时,左端数量增多,右边减少,ans += l*r;

一次遍历(枚举右,维护左)

思考,我们不仅可以枚举中间,我们可以枚举右边,要找到mp[x]和mp[x/2],当右端为 x 时,就是要加上前面所有的 x 的数量,但是怎么确定中间出现过 x/2,我们在每次遍历到 x/2 的时候加上 x 的次数就行了 **最终代码:

const int MOD = 1e9+7;

    int specialTriplets(vector<int>& nums) {

        int n =nums.size();

        unordered_map<int,long long> cnt1,cnt2;

        long long ans = 0;

        for(int x:nums){

            if((x%2)==0) ans = (ans+cnt1[x/2])%MOD;

            cnt1[x] += cnt2[x*2];

            cnt2[x]++;

        }

        return ans%MOD;

    }

学到的点:

  1. 枚举右维护左

执笔 手写

随机文章

加载中...