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

2670. 找出不同元素数目差数组

题目描述:

给你一个下标从 0 开始的数组 nums ,数组长度为 n 。

nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示,其中 diff[i] 等于前缀 nums[0, ..., i] 中不同元素的数目 减去 后缀 nums[i + 1, ..., n - 1] 中不同元素的数目。

返回 nums 的 不同元素数目差 数组。

注意 nums[i, ..., j] 表示 nums 的一个从下标 i 开始到下标 j 结束的子数组(包含下标 i 和 j 对应元素)。特别需要说明的是,如果 i > j ,则 nums[i, ..., j] 表示一个空子数组。

示例 1:

输入:nums = [1,2,3,4,5]
输出:[-3,-1,1,3,5]
解释:
对于 i = 0,前缀中有 1 个不同的元素,而在后缀中有 4 个不同的元素。因此,diff[0] = 1 - 4 = -3 。
对于 i = 1,前缀中有 2 个不同的元素,而在后缀中有 3 个不同的元素。因此,diff[1] = 2 - 3 = -1 。
对于 i = 2,前缀中有 3 个不同的元素,而在后缀中有 2 个不同的元素。因此,diff[2] = 3 - 2 = 1 。
对于 i = 3,前缀中有 4 个不同的元素,而在后缀中有 1 个不同的元素。因此,diff[3] = 4 - 1 = 3 。
对于 i = 4,前缀中有 5 个不同的元素,而在后缀中有 0 个不同的元素。因此,diff[4] = 5 - 0 = 5 。

示例 2:

输入:nums = [3,2,3,4,2]
输出:[-2,-1,0,2,3]
解释:
对于 i = 0,前缀中有 1 个不同的元素,而在后缀中有 3 个不同的元素。因此,diff[0] = 1 - 3 = -2 。
对于 i = 1,前缀中有 2 个不同的元素,而在后缀中有 3 个不同的元素。因此,diff[1] = 2 - 3 = -1 。
对于 i = 2,前缀中有 2 个不同的元素,而在后缀中有 2 个不同的元素。因此,diff[2] = 2 - 2 = 0 。
对于 i = 3,前缀中有 3 个不同的元素,而在后缀中有 1 个不同的元素。因此,diff[3] = 3 - 1 = 2 。
对于 i = 4,前缀中有 3 个不同的元素,而在后缀中有 0 个不同的元素。因此,diff[4] = 3 - 0 = 3 。 

提示:

  • 1 <= n == nums.length <= 50
  • 1 <= nums[i] <= 50

思路:

计算两个数组,一个前缀数组(从前往后记录当前位置以前出现过多少个不同数字),一个后缀数组(从后往前记录记录当前位置以后有多少个不同数字)。

然后遍历元素,前缀数组-后缀数组

代码:

class Solution(object):def distinctDifferenceArray(self, nums):""":type nums: List[int]:rtype: List[int]"""pre,post=[],[0]pre_cur=set()post_cur=set()res=[]n=len(nums)post_cur.add(nums[len(nums)-1])for i in range(len(nums)):pre_cur.add(nums[i])pre.append(len(pre_cur))for i in range(len(nums)-2,-1,-1):post.append(len(post_cur))#后缀里是不包含当前元素的,因此先计算上一步的长度放入post_cur.add(nums[i])print(len(pre))print(len(post))for i in range(len(nums)):res.append(pre[i]-post[n-1-i])return res

AC!结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装配置hive

1、下载 上传apache-hive-2.3.7-bin.tar.gz到虚拟机/root目录下或在虚拟机正常联网的情况下使用下面的wget命令下载文件。 [root@hadoop00 ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz [root@hadoop00 ~]# tar zx…

windows 谷歌浏览器Chrome 怎么禁止更新

1.首先把任务管理器里的谷歌浏览器程序结束&#xff1a; &#xff08;鼠标在任务栏右击&#xff0c;出现任务管理器&#xff09; 2.windowr&#xff0c;输入services.msc 带有Google Update的服务&#xff0c;选择禁用。 3.windowr&#xff0c;输入taskschd.msc 任务计划程序…

二叉搜索树,力扣

目录 题目地址&#xff1a; 题目&#xff1a; 我们直接看题解吧&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现&#xff1a; 代码补充说明&#xff1a; 代码实现(中序遍历)&#xff1a; 题目地址&#xff1a; 98. 验证二叉搜索树 - 力扣&#xff08;LeetCod…

delete、truncate和drop区别

一、从执行速度上来说 drop > truncate >> DELETE 二、从原理上讲 1、DELETE DELETE from TABLE_NAME where xxx1.1、DELETE属于数据库DML操作语言&#xff0c;只删除数据不删除表的结构&#xff0c;会走事务&#xff0c;执行时会触发trigger&#xff08; 触发器…

8. 字符串转换整数 (atoi)-LeetCode(Java)

8. 字符串转换整数 (atoi) 题目&#xff1a;8. 字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入…

AI大语言模型学习笔记之三:协同深度学习的黑魔法 - GPU与Transformer模型

Transformer模型的崛起标志着人类在自然语言处理&#xff08;NLP&#xff09;和其他序列建模任务中取得了显著的突破性进展&#xff0c;而这一成就离不开GPU&#xff08;图形处理单元&#xff09;在深度学习中的高效率协同计算和处理。 Transformer模型是由Vaswani等人在2017年…

2024美赛预测算法 | 回归预测 | Matlab基于WOA-LSSVM鲸鱼算法优化最小二乘支持向量机的数据多输入单输出回归预测

2024美赛预测算法 | 回归预测 | Matlab基于WOA-LSSVM鲸鱼算法优化最小二乘支持向量机的数据多输入单输出回归预测 目录 2024美赛预测算法 | 回归预测 | Matlab基于WOA-LSSVM鲸鱼算法优化最小二乘支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果…

Git 指令

Git 安装 操作 命令行 简介&#xff1a; Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion …

2024PMP考试新考纲-【业务环境领域】典型真题和很详细解析(2)

华研荟继续分享【业务环境Business Environment领域】在新考纲下的真题&#xff0c;帮助大家体会和理解新考纲下PMP的考试特点和如何应用所学的知识和常识&#xff08;经验&#xff09;来解题&#xff0c;并且举一反三&#xff0c;一次性3A通过2024年PMP考试。 2024年PMP考试新…

准确率90%+!大模型会话洞察平台来了

随着客户行为和需求加速改变&#xff0c;企业与客户在数字渠道沟通并交易的比重大幅提升。企业通过在线客服、社交媒体、短信、语音助手等数字化渠道与客户建立联系的方式&#xff0c;不仅拓宽了沟通途径&#xff0c;更显著提高了服务效率和质量。 与此同时&#xff0c;数字化…

POSIX(包含程序的可移植性) -- 详解

1. 什么是 POSIX 参考链接–知乎 POSIX 标准包含了进程管理、文件管理、网络通信、线程和同步、信号处理等方面的功能。 这些接口定义了函数、数据类型和常量等&#xff0c;为开发者提供了一个可移植的方法来与操作系统进行交互。 2. 谁遵守这个标准 遵守 POSIX 标准的主要是…

【WPF.NET开发】优化性能:二维图形和图像处理

本文内容 绘图和形状StreamGeometry 对象DrawingVisual 对象映像 WPF 提供了多种可按应用程序要求进行优化的 2D 图形和图像处理功能。 本主题提供有关这些方面性能优化的信息。 1、绘图和形状 WPF 提供 Drawing 和 Shape 对象来表示图形绘制内容。 但是&#xff0c;Drawin…

Python——将Pyaudio的frame音频数据转换成wave格式

要将pyaudio捕获的音频帧&#xff08;frame&#xff09;数据转换成wave模块可以直接处理的格式&#xff0c;通常意味着你需要将这些音频帧数据组装成一个完整的音频流&#xff0c;并确保它们以wave模块期望的格式进行存储。但是&#xff0c;如果你的目的是将这些帧数据直接转换…

蛋氨酸市场调研:预计2029年将达到87亿美元

蛋氨酸&#xff0c;又名甲硫氨酸&#xff0c;化学名称为γ-甲硫基-a-氨基丁酸&#xff0c;是一种参与蛋白质合成的基本结构单位&#xff0c;是人体内八种必需氨基酸之一&#xff0c;同时也是重要的饲料添加剂。蛋氨酸主要用于家禽、猪的饲料添加剂以及药用等。对禽类来说&#…

adb脚本操作

用荣耀80手机测试 echo off setlocal enabledelayedexpansion adb shell am start com.android.settings timeout /t 2 /nobreak >nul adb shell input tap 500 1300 timeout /t 2 /nobreak >nul adb shell input tap 500 800 timeout /t 2 /nobreak >nul adb she…

ElasticSearch搜索与分析引擎-Linux离线环境安装教程

目录 一、下载安装包 网盘链接: 二、安装流程及遇到的问题和解决方案 &#xff08;1&#xff09;JDK安装 &#xff08;2&#xff09;Elasticsearch安装 &#xff08;3&#xff09;Kibana安装 ​&#xff08;4&#xff09;Ik分词器安装 三、启动过程中的问题 &#xff…

linux查看mysql状态重启

1.linux怎么看mysql数据库是不是宕机了&#xff1f; MySQL/MariaDB数据库的状态&#xff1a;使用systemctl status mysql或者service mysqld status命令。如果显示"active (running)"表示MySQL正常运行&#xff1b;如果显示"inactive (dead)"则表示MySQL已…

ASP.NET Core WebAPI_解决跨域问题(前端后端)

说明 我的前端框架为Vue&#xff13; 前后端跨域选其一即可 前端跨域 在项目的根目录找到vite.config.js文件&#xff0c;添加代码&#xff1a; server: {proxy: {/api: {target: https://localhost:xxxx,changeOrigin: true,secure: false},},} axios代码片段&#xff1a; …

C语言系列-联合

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” 目录 联合体 联合体类型的声明 联合体的特点 相同成员的结构体和联合体对比 联合体大小的计算 联合的一个练习 联合体 联合体类型的声明 像结构体一样&#xff0c;联合体也是由…

【Flink】FlinkSQL实现数据从MySQL到MySQL

简介 我们在实际开发过程中可以使用Flink实现数据从MySQL传输到MySQL具体操作,本例子Flink版本1.13.6,具体操作如下: 创建mysql测试表 下面语句创建了mysql原表和目标表,并插入一条语句到mysql原表中 CREATE TABLE `mysql_source` ( `id` int(11) unsigned NOT NULL A…