当前位置: 首页 > article >正文

2024.1.31力扣每日一题——找出不同元素数目差数组

2024.1.31

      • 题目来源
      • 我的题解
        • 方法一 哈希表+前后缀

题目来源

力扣每日一题;题序:2670

我的题解

方法一 哈希表+前后缀

从左到右计算前缀数组pre[i]表示nums[0,i]的不同元素个数;
从右到左计算后缀suff[i]表示nums(i,nums.length]的不同元素个数;
结果数组:pre[i]-suff[i]。
由于后续的后缀数组和结果数组可以复用前面的前缀数组,所以只需要定义一个数组

时间复杂度:O(n)
空间复杂度:O(n)

 public int[] distinctDifferenceArray(int[] nums) {
    int n=nums.length;
    int[] pre=new int[n];
    int[] suff=new int[n];
    Set<Integer> set=new HashSet<>();
    for(int i=0;i<n;i++){
        set.add(nums[i]);
        pre[i]=set.size();
    }
    set.clear();
    for(int i=n-1;i>=0;i--){
        if(i==n-1){
            continue;
        }
        set.add(nums[i+1]);
        pre[i]=pre[i]-set.size();
    }
    return pre;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~


http://www.kler.cn/a/234062.html

相关文章:

  • 学Linux的第八天
  • 【JAVA】Java基础—面向对象编程:封装—保护类的内部数据
  • C#程序开发,检测当前电脑已经安装的软件目录
  • SCUI Admin + Laravel 整合
  • Typescript类型运算符、关键字以及内置高级类型
  • 数学建模模型算法-Python实现
  • JAVA面试题11
  • 基于PSO粒子群优化的PID控制器参数整定算法matlab仿真
  • 算法练习-四数之和(思路+流程图+代码)
  • 【linux系统体验】-archlinux折腾日记
  • Java 内存区域介绍
  • 如何为Kafka加上账号密码(二)
  • Android---Jetpack Compose学习002
  • BUUCTF-Real-[Tomcat]CVE-2017-12615
  • 命令行随笔
  • 《计算思维导论》笔记:10.4 关系模型-关系运算
  • JRT监听程序
  • 爬虫练习——动态网页的爬取(股票和百度翻译)
  • Jetpack Compose常用工具包推荐
  • WordPress函数wptexturize的介绍及用法示例,字符串替换为HTML实体
  • HTML5+CSS3+移动web——HTML 基础
  • 计算机网络期末复习要点(谢希仁第8版)抱佛脚通用
  • CodeWave学习笔记--博物馆预约管理系统
  • [C#] 如何对列表,字典等进行排序?
  • 4、解构三个重要的Pipeline(SD-Inpainting, ControlNet, AnimateDiff) [代码级手把手解析diffusers库]
  • redis过期淘汰策略、数据过期策略与持久化方式