首页 > 其他分享 >2023.6.13 数组中不等三元组的数目

2023.6.13 数组中不等三元组的数目

时间:2023-06-13 15:46:06浏览次数:57  
标签:pre mut 13 遍历 元素 value 三元组 2023.6 哈希

image

直接的思路是三重循环\(O(n^3)\)解决,由于数据范围是\(n \leq 100\),所以\(n^3 \leq 10^6\)可以过。
如果想稍微优化一下的话,可以考虑下面两种思路,都是类似的:

  1. 排序,排完序后相同的元素会聚集到一起,假设他们聚集在了区间\([i, j]\)内。那\([0, i - 1]\)这一部分区间和\([j + 1, n]\)这部分区间和中间的元素肯定都不相同。此时可以根据乘法原理直接统计答案。遍历一遍,对每个聚集区间计算其贡献,累加即可。
  2. 哈希表,先遍历一次,预处理出所有元素的出现次数。然后遍历哈希表,哈希表获得当前元素出现次数v,用一个变量pre统计前面已经被遍历过的元素,那后面还没被遍历过且和当前元素不同的元素个数就是n - pre - v,对于每个元素都执行这个计算,累计贡献即可。
use std::collections::HashMap;

impl Solution {
    pub fn unequal_triplets(nums: Vec<i32>) -> i32 
    {
        let mut cnt = HashMap::new();
        for x in nums.iter() {
            cnt.entry(x).and_modify(|x| *x += 1).or_insert(1);
        }

        let n = nums.len();
        let (mut res, mut pre) = (0, 0);
        for (_, value) in cnt {
            res += pre * value * (n as i32 - pre - value);
            pre += value;
        }
        res
    }
}

标签:pre,mut,13,遍历,元素,value,三元组,2023.6,哈希
From: https://www.cnblogs.com/st0rmKR/p/17477726.html

相关文章

  • 升级Ubuntu18.04上的gitlab 13.7.3
    1、查看gitlab版本,在首页后面添加/help就可以看到了也可以用命令查看cat/opt/gitlab/embedded/service/gitlab-rails/VERSION2、gitLab版本升级,需要按照官方的指示版本进行依次升级8.11.Z->8.12.0->8.17.7->9.5.10->10.8.7->11.11.8->12.0.12->12.1.17->12.10.1......
  • 中国大学13大学科门类
    13大学科门类理工类理学:数学、物理、化学工学:力学、机械、仪器、材料、动力能源、电气、电子信息、自动化、计算机、土木水利测绘、地质矿业、纺织、交通运输、航洋工程、兵器、核工业、农业工程、环境科学、生物医药、食品科学、公安技术农学医学军事学文史类管......
  • 记20230613
    今天把CXO的需求写完了,但是晨利说比较忙。我在想如果我周六日做完这些工作,那周一干什么呢?昨晚上天空特别好看  ......
  • 大一下期末前随笔 ——2023.6.13
    大一下期末前随笔——2023.6.131.迷茫的过程​ 在微积分月考成绩出来之后,我的脑子又进入了未知状态(实际就是emo罢了)。原本以为90+成绩的我看着6开头的成绩,说不出话。可是自己现在却比以前相对平静了许多,可能是这样的事情遭遇的多起来了把。从高考到上学期的线代,再到这学期的......
  • 小米MIX 2升级Lineage OS 20(Android 13)卡进度0%
    参考lineageoswiki安装时sideload会卡进度0%,电脑终端卡在serving'lineage-20.0-20230608-nightly-chiron-signed.zip'(~0%)手机端卡在Verifyingupdatepackage...wiki步骤基本步骤:#重启到fastbootadbrebootbootloader#连接设备fastbootdevices#刷recoveryf......
  • 力扣---2475. 数组中不等三元组的数目
    给你一个下标从0开始的正整数数组nums。请你找出并统计满足下述条件的三元组(i,j,k)的数目:0<=i<j<k<nums.lengthnums[i]、nums[j]和nums[k]两两不同。换句话说:nums[i]!=nums[j]、nums[i]!=nums[k]且nums[j]!=nums[k]。返回满足上述条件三元组的数目......
  • 2023.6.12 03.数据库基本操作
    1.数据库连接⽅式2.SQL语⾔3.Mysql数据库对应与应⽤4.数据库基本操作5.数据库增删查改6.数据库查询语句6.1单表查询6.2多表查询6.3⼦查询 系统数据库information_schema(虚拟库)⽤户表信息、列信息、权限信息、字符信息等#查询有多少个库mysql>SELECTCOUNT(*)......
  • 2023.6.12 鲜花
    尝试写鲜花。其实是在记录一些有趣的事情。比如说有同班同学在高考前一天晚上12点时说:太卷了太卷了。或者是笔者过于摆烂,这也是有一定道理的,比如笔者的学姐在主页中夸赞道:我们可以将这句话翻译成LAK天下倒一。同时,我们不妨认为“LAK”就是“拉胯”的意思。所以笔者还是......
  • CF113B Petr# 题解
    最近在做字符串的题,正好就给我随机了一道这个(题意给你一个字符串\(s\)以及一个开头串\(s_{begin}\)和结尾串\(s_{end}\),问该字符串中有多少个不同的子串,满足以\(s_{begin}\)开头,以\(s_{end}\)结尾。两个子串不同,当且仅当两个子串长度不同,或长度相同但至少有一个位置上......
  • (2023.6.12)buildroot交叉编译第三方库
    编译链没有精确到bin目录Buildroot下没有dl文件夹(编译之后才有;新的第三方库,文件夹如何命名?) 修改profile,使用build_root重新编译??(重新打包就行)新的第三方库源码如何配置编译参数?......