LeetCode 每日一题 2024/11/18-2024/11/24

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


目录

      • [11/18 661. 图片平滑器](#11/18 661. 图片平滑器)
      • [11/19 3243. 新增道路查询后的最短距离 I](#11/19 3243. 新增道路查询后的最短距离 I)
      • [11/20 3244. 新增道路查询后的最短距离 II](#11/20 3244. 新增道路查询后的最短距离 II)
      • [11/21 3248. 矩阵中的蛇](#11/21 3248. 矩阵中的蛇)
      • [11/22 3233. 统计不是特殊数字的数字数量](#11/22 3233. 统计不是特殊数字的数字数量)
      • 11/23
      • 11/24

11/18 661. 图片平滑器

遍历每一个点 统计九个位置是否满足

python 复制代码
def imageSmoother(img):
    """
    :type img: List[List[int]]
    :rtype: List[List[int]]
    """
    pos = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(0,0),(1,-1),(1,0),(1,1)]
    m,n = len(img),len(img[0])
    ret = [[0]*n for _ in range(m)]
    for i in range(m):
        for j in range(n):
            num = 0
            v = 0
            for x,y in pos:
                newi,newj = i+x,j+y
                if 0<=newi<m and 0<=newj<n:
                    num+=1
                    v += img[newi][newj]
            ret[i][j] = v//num
    return ret

11/19 3243. 新增道路查询后的最短距离 I

dp[i]记录从0到i的最短距离

f[i]记录额外边终点是i的起点列表

python 复制代码
def shortestDistanceAfterQueries(n, queries):
    """
    :type n: int
    :type queries: List[List[int]]
    :rtype: List[int]
    """
    f=[[] for _ in range(n)]
    dp=list(range(n))
    ans = []
    for l,r in queries:
        f[r].append(l)
        if dp[l]+1<dp[r]:
            dp[r]=dp[l]+1
            for i in range(r+1,n):
                minv = float("inf")
                for j in f[i]:
                    minv = min(minv,dp[j])
                dp[i]=min(dp[i],dp[i-1]+1,minv+1)
        ans.append(dp[-1])
    return ans
        

11/20 3244. 新增道路查询后的最短距离 II

不包含两条交叉的单向通道

新增一条单向通道

如果被已考虑的单向通道包含 则不会使路径变短

否则 去掉被包含的单向通道 将该通道加入最短路径

roads记录最短路径的单向通道 roads[i]=j 表示从i到j有一条单向通道

新增道路(i,j)

如果road[i]=-1 说明选择该道路不会减少路径忽略

python 复制代码
def shortestDistanceAfterQueries(n, queries):
    """
    :type n: int
    :type queries: List[List[int]]
    :rtype: List[int]
    """
    road=[i+1 for i in range(n)]
    ans = []
    dist = n-1
    for q in queries:
        k = road[q[0]]
        road[q[0]]=q[1]
        while k!=-1 and k<q[1]:
            road[k],k=-1,road[k]
            dist-=1
        ans.append(dist)
    return ans

11/21 3248. 矩阵中的蛇

题目已知在边界内活动

模拟每一个步骤

up -n

right +1

down +n

left -1

python 复制代码
def finalPositionOfSnake(n, commands):
    """
    :type n: int
    :type commands: List[str]
    :rtype: int
    """
    cur = 0
    for c in commands:
        if c=="UP":
            cur-=n
        elif c=="DOWN":
            cur+=n
        elif c=="RIGHT":
            cur+=1
        else:
            cur-=1
    return cur

11/22 3233. 统计不是特殊数字的数字数量

根据题意 质数的平方数是特殊数字

埃氏筛遍历所有质数的平方是否在区间内

python 复制代码
def nonSpecialCount(l, r):
    """
    :type l: int
    :type r: int
    :rtype: int
    """
    import math
    n=int(math.sqrt(r))
    v = [0]*(n+1)
    ans = r-l+1
    for i in range(2,n+1):
        if v[i]==0:
            if l<=i*i<=r:
                ans-=1
            for j in range(i*2,n+1,i):
                v[j]=1
    return ans

11/23

python 复制代码

11/24

python 复制代码

相关推荐
renhongxia121 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了21 小时前
数据结构之树(Java实现)
java·算法
算法备案代理21 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.1 天前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
野犬寒鸦1 天前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总1 天前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
rainbow68891 天前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
wangjialelele1 天前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先
驱动探索者1 天前
linux mailbox 学习
linux·学习·算法
ringking1231 天前
autoware-1:安装环境cuda/cudnn/tensorRT库函数的判断
人工智能·算法·机器学习