前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2670.找出不同元素数目差数组-力扣(LeetCode)

2670.找出不同元素数目差数组-力扣(LeetCode)

作者头像
HelloWorldZ
发布2024-03-20 19:09:21
680
发布2024-03-20 19:09:21
举报
文章被收录于专栏:前端开发前端开发

题目详情

给你一个下标从 0 开始的数组 nums ,数组长度为 nnums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示,其中 diff[i] 等于前缀 nums[0, ..., i] 中不同元素的数目 减去 后缀 nums[i + 1, ..., n - 1] 中不同元素的数目。返回 nums 的 不同元素数目差 数组。注意 nums[i, ..., j] 表示 nums 的一个从下标 i 开始到下标 j 结束的子数组(包含下标 ij 对应元素)。特别需要说明的是,如果 i > j ,则 nums[i, ..., j] 表示一个空子数组。

示例

  • 示例 1:

输入:

代码语言:javascript
复制
nums = [1,2,3,4,5]

输出:

代码语言:javascript
复制
[-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:

输入:

代码语言:javascript
复制
nums = [3,2,3,4,2]

输出:

代码语言:javascript
复制
[-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

题解

代码语言:javascript
复制
/**
 @ 一小池勺
 * @param {number[]} nums
 * @return {number[]}
 @ 2024 1 31
 */
var distinctDifferenceArray = function(nums) {  
  const res = []  
  let left = new Set()  // 选用 Set
  const right = nums.slice(0)  // 复制数组
  // 一次遍历
  for(let i = 0; i < nums.length; i++) {  
    left.add(right.splice(0, 1)[0])  // 遍历过程中,每一轮都将 right 的第一个元素给到 left
    res.push(left.size - (new Set(right)).size)  // 计算
  }  
  return res  
}

代码思路

  • Set结构会进行数组去重
  • 一次遍历,不断右移,更新 diff[i]
  • splice可以影响 right 数组
  • (new Set(right)).size 去重后的长度
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目详情
  • 示例
  • 提示
  • 题解
  • 代码思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com