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 复制代码

相关推荐
We་ct12 分钟前
LeetCode 12. 整数转罗马数字:从逐位实现到规则复用优化
前端·算法·leetcode·typescript
绿算技术15 分钟前
重塑智算存储范式:绿算技术NVMe-oF芯片解决方案全景剖析
人工智能·算法·gpu算力
sin_hielo27 分钟前
leetcode 3510
数据结构·算法·leetcode
Anastasiozzzz38 分钟前
力扣hot100 20.有效的括号 解析
java·算法·面试·力扣
CrazyClaz43 分钟前
负载均衡算法
算法·负载均衡
嵌入式小能手1 小时前
飞凌嵌入式ElfBoard-系统信息与资源之休眠
c语言·开发语言·算法
历程里程碑1 小时前
哈希3 : 最长连续序列
java·数据结构·c++·python·算法·leetcode·tornado
闻缺陷则喜何志丹1 小时前
【图论】P9661 [ICPC 2021 Macao R] Sandpile on Clique|普及+
c++·算法·图论·洛谷
2401_841495641 小时前
【LeetCode刷题】两两交换链表中的节点
数据结构·python·算法·leetcode·链表·指针·迭代法
傻啦嘿哟2 小时前
构建命令行单词记忆工具:JSON词库与复习算法的完美结合
算法·json