leetcode2670找出不同元素数目差数组

题目链接

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

解题思路

暴力破解
class Solution:
    def distinctDifferenceArray(self, nums: List[int]) -> List[int]:
        mapbefore = [1] * len(nums)
        tmp = [nums[0]]
        for i in range(1,len(nums)):
            if nums[i] not in tmp:
                tmp.append(nums[i])
                mapbefore[i] = mapbefore[i - 1] + 1
            else:
                mapbefore[i] = mapbefore[i - 1]
        print(mapbefore)

        mapafter = [0] * len(nums)
        tmp = []
        for i in range(len(nums) - 2, -1, -1):
            if nums[i + 1] not in tmp:
                tmp.append(nums[i + 1])
                mapafter[i] = mapafter[i + 1] + 1
            else:
                mapafter[i] = mapafter[i + 1]
        print(mapafter)
        result = []
        for i in range(0,len(nums)):
            result.append(mapbefore[i]-mapafter[i])
        return result
使用set()
class Solution:
    def distinctDifferenceArray(self, nums: List[int]) -> List[int]:
        st = set()
        sufCnt = [0] * (len(nums) + 1)
        for i in range(len(nums) - 1, 0, -1):
            st.add(nums[i])
            sufCnt[i] = len(st)
        res = []
        st.clear()
        for i in range(len(nums)):
            st.add(nums[i])
            res.append(len(st) - sufCnt[i + 1])
        return res
相关推荐
Lenyiin7 分钟前
3286、穿越网格图的安全路径
c++·算法·leetcode
临沂堇20 分钟前
CCF刷题计划——阴阳龙(八方最近点)
算法
轩源源35 分钟前
C/C++内存管理
c语言·开发语言·数据结构·c++·算法·缓存·内存空间的开创
人才程序员1 小时前
CSP-J 算法基础 图论
开发语言·数据结构·c++·算法·青少年编程·图论·编程比赛
微学AI1 小时前
机器学习实战21-基于XGBoost算法实现糖尿病数据集的分类预测模型及应用
算法·机器学习·分类·糖尿病
热爱编程的OP1 小时前
图论篇--代码随想录算法训练营第五十八天打卡|拓扑排序,dijkstra(朴素版),dijkstra(堆优化版)精讲
数据结构·c++·算法·图论
bluebonnet271 小时前
【Rust练习】14.流程控制
开发语言·c++·后端·算法·rust
spiritualfood2 小时前
联合体与枚举以及结构体补充
c语言·开发语言·c++·算法·青少年编程
ZLRRLZ2 小时前
【初阶数据结构】排序
c语言·算法·排序算法
时雨h2 小时前
【数学建模】典型相关分析
算法·数学建模