LeetCode 每日一题 2024/8/26-2024/9/1

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • [8/26 690. 员工的重要性](#8/26 690. 员工的重要性)
      • [8/27 3134. 找出唯一性数组的中位数](#8/27 3134. 找出唯一性数组的中位数)
      • [8/28 3144. 分割字符频率相等的最少子字符串](#8/28 3144. 分割字符频率相等的最少子字符串)
      • [8/29 3142. 判断矩阵是否满足条件](#8/29 3142. 判断矩阵是否满足条件)
      • [8/30 3153. 所有数对中数位不同之和](#8/30 3153. 所有数对中数位不同之和)
      • 8/31
      • 9/1

8/26 690. 员工的重要性

BFS

python 复制代码
class Employee(object):
    def __init__(self, id, importance, subordinates):
        # It's the unique id of each node.
        # unique id of this employee
        self.id = id
        # the importance value of this employee
        self.importance = importance
        # the id of direct subordinates
        self.subordinates = subordinates
        
def getImportance(employees, id):
    """
    :type employees: Employee
    :type id: int
    :rtype: int
    """
    if len(employees)==0:
        return 0
    dic = {}
    for v in employees:
        dic[v.id] = v
    ret = 0
    l =[]
    l.append(id)
    while len(l)>0:
        n = l.pop(0)
        e = dic.get(n)
        ret += e.importance
        l.extend(e.subordinates)
    return ret

8/27 3134. 找出唯一性数组的中位数

共有m=1+2+...+n=n*(n+1)/2个费控连续子数组

中位数是第k=m//2个元素

对于一个子数组如果变长 它的不同元素个数不会变少

check(upper)检查小于upper数有多少个

python 复制代码
def medianOfUniquenessArray(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    import bisect
    from collections import defaultdict
    n=len(nums)
    k=(n*(n+1)//2+1)//2
    def check(upper):
        cnt = 0
        l = 0
        fre = defaultdict(int)
        for r,v in enumerate(nums):
            fre[v] +=1
            while len(fre)>upper:
                out = nums[l]
                fre[out]-=1
                if fre[out]==0:
                    del fre[out]
                l+=1
            cnt += r-l+1
            if cnt>=k:
                return True
        return False
    return bisect.bisect_left(range(len(set(nums))), True,1,key=check)

8/28 3144. 分割字符频率相等的最少子字符串

dpi记录以i结尾的前缀字符串最少平和字符串个数

对于每个i j从后往前遍历 mx存储字符x出现次数

对于子字符串sj:i 记录字符出现最大次数cnt

如果每个字符出现次数相同那么cnt*len(m)=字符串长度i-j+1

python 复制代码
def minimumSubstringsInPartition(s):
    """
    :type s: str
    :rtype: int
    """
    from collections import defaultdict
    n=len(s)
    dp = [float("inf")]*(n+1)
    dp[0]=0
    for i in range(1,n+1):
        m = defaultdict(int)
        cnt = 0
        for j in range(i,0,-1):
            m[s[j-1]]+=1
            cnt = max(cnt,m[s[j-1]])
            if cnt*len(m)==i-j+1 and dp[j-1]!=float("inf"):
                dp[i]=min(dp[i],dp[j-1]+1)
    return dp[n]

8/29 3142. 判断矩阵是否满足条件

判断第一行 相邻是否不同

判断每一列 是否相同

python 复制代码
def satisfiesConditions(grid):
    """
    :type grid: List[List[int]]
    :rtype: bool
    """
    n,m=len(grid),len(grid[0])
    for j in range(m):
        if j>0 and grid[0][j-1]==grid[0][j]:
            return False
        for i in range(1,n):
            if grid[i-1][j]!=grid[i][j]:
                return False
    return True

8/30 3153. 所有数对中数位不同之和

依次统计每一位上所有数值的个数

n=len(nums)

如果数值x出现m次 那么有n-m种情况会出现该位是不同的

累加最后因为重复计算除以二

python 复制代码
def sumDigitDifferences(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    n=len(nums)
    ans = 0
    while nums[0]>0:
        m = [0]*10
        for i in range(n):
            m[nums[i]%10]+=1
            nums[i]//=10
        for x in range(10):
            ans += (n-m[x])*m[x]
    return ans//2
            

8/31

python 复制代码

9/1

python 复制代码

相关推荐
代码山河10 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行10 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者11 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
UIU11412 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
“AI国潮设计-小江”12 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
论文复现现场13 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi13 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
benchmark_cc13 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读14 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
秋天的怀念_David14 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法