LeetCode 每日一题 2024/7/1-2024/7/7

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


目录

      • 7/1 2065. 最大化一张图中的路径价值
      • 7/2 3115. 质数的最大距离
      • 7/3 3099. 哈沙德数
      • 7/4 3086. 拾起 K 个 1 需要的最少行动次数
      • 7/5 3033. 修改矩阵
      • 7/6 3101. 交替子数组计数
      • 7/7 1958. 检查操作是否合法


7/1 2065. 最大化一张图中的路径价值

递归回溯 枚举每种情况
每次回到0更新答案

def maximalPathQuality(values, edges, maxTime):
    """
    :type values: List[int]
    :type edges: List[List[int]]
    :type maxTime: int
    :rtype: int
    """
    from collections import defaultdict
    g = defaultdict(list)
    for x,y,t in edges:
        g[x].append((y,t))
        g[y].append((x,t))
    visited = {0}
    global ans
    ans = 0
    
    def dfs(u,t,va):
        global ans
        if u==0:
            ans = max(ans,va)
        for v,d in g[u]:
            if t+d <=maxTime:
                if v not in visited:
                    visited.add(v)
                    dfs(v,t+d,va+values[v])
                    visited.discard(v)
                else:
                    dfs(v,t+d,va)
    dfs(0,0,values[0])
    return ans



7/2 3115. 质数的最大距离

每个数值不大于100 可以得到所有质数
从前往后 从后往前依次寻找第一个遇到的质数
即可得到最小坐标和最大坐标

def maximumPrimeDifference(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    primes = {
            2, 3, 5, 7, 11,
            13, 17, 19, 23, 29,
            31, 37, 41, 43, 47,
            53, 59, 61, 67, 71,
            73, 79, 83, 89, 97
        }
    
    n = len(nums)
    left,right=-1,-1
    for i in range(n):
        if nums[i] in primes:
            left = i
            break
    for i in range(n-1,-1,-1):
        if nums[i] in primes:
            right = i
            break
    return right-left



7/3 3099. 哈沙德数

按定义求和 取余

def sumOfTheDigitsOfHarshadNumber(x):
    """
    :type x: int
    :rtype: int
    """
    num = x
    v = 0
    while x>0:
        v += x%10
        x //=10
    return v if num%v==0 else -1



7/4 3086. 拾起 K 个 1 需要的最少行动次数

当前位置为i 有两种情况可以捡起1
1.不变换数字:
如果有一个位置x nums[x]=1
x在i两侧 i-1<=x<=i+1只需要一步可以得到一个1
否则需要|x-i|步才可以得到一个1 至少需要2步
2.变换数字:
将邻近数字变为1 交换 2步得到一个1

设f(i)为左右1位邻居内的1个数
如果f(i)+maxChanges>=k 那么先将左右两边的先拾起
再使用变换数字的方法得到1
如果f(i)+maxChanges<k 那么先拾取左右两边 使用变换数字方法
最后剩下k-maxChanges个需要不变换数字移动拾取
使用leftc,rightc维护[left,i),(i,right]区间内1的个数
lefts,rights维护区间内值为1的下标和
如果[left,i)区间内的leftc个1要拾取需要每一个都到i
步数为 i*leftc-lefts 右侧同理
从小到大枚举i
根据左右端点离i的远近 去掉较远的

def minimumMoves(nums, k, maxChanges):
    """
    :type nums: List[int]
    :type k: int
    :type maxChanges: int
    :rtype: int
    """
    n = len(nums)
    def f(i):
        return sum(nums[max(i-1,0):min(i+2,n)])
    left,right=0,-1
    lefts,rights=0,0
    leftc,rightc=0,0
    ans = float("inf")
    for i in range(n):
        if f(i)+maxChanges>=k:
            if k<=f(i):
                ans = min(ans,k-nums[i])
            else:
                ans = min(ans,2*k-f(i)-nums[i])
        if k<=maxChanges:
            continue
        while right+1<n and (right-i<i-left or leftc+rightc+maxChanges<k):
            if nums[right+1]==1:
                rightc+=1
                rights+=right+1
            right+=1
        while leftc+rightc+maxChanges>k:
            if right-i<i-left or right-i==i-left and nums[left]==1:
                if nums[left]==1:
                    leftc-=1
                    lefts-=left
                left+=1
            else:
                if nums[right]==1:
                    rightc-=1
                    rights-=right
                right-=1
        ans = min(ans,leftc*i-lefts+rights-rightc*i+2*maxChanges)
        if nums[i]==1:
            leftc+=1
            lefts+=i
            rightc-=1
            rights-=i
    return ans



7/5 3033. 修改矩阵

遍历 遇到-1寻找当前列最大值替换

def modifiedMatrix(matrix):
    """
    :type matrix: List[List[int]]
    :rtype: List[List[int]]
    """
    m,n=len(matrix),len(matrix[0])
    for j in range(n):
        maxv=-1
        for i in range(m):
            if matrix[i][j]==-1:
                if maxv==-1:
                    maxv=max([matrix[x][j] for x in range(m)])
                matrix[i][j]=maxv
    return matrix



7/6 3101. 交替子数组计数

遍历数组记录上一个数数值和当前最长交替子数组长度
如果数值不一致 则交替子数组长度+1
否则子数组长度为1
最长长度即为当前元素结尾的子数组个数 累加

def countAlternatingSubarrays(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    ans = 0
    cur = 0
    pre =-1
    for num in nums:
        if pre!=num:
            cur+=1
        else:
            cur=1
        pre=num
        ans+=cur
    return ans



7/7 1958. 检查操作是否合法

遍历八个方向 检查是否存在好线段

def checkMove(board, rMove, cMove, color):
    """
    :type board: List[List[str]]
    :type rMove: int
    :type cMove: int
    :type color: str
    :rtype: bool
    """
    def check(dx,dy):
        x,y = rMove+dx,cMove+dy
        step = 1
        while 0<=x<8 and 0<=y<8:
            if board[x][y]=='.':
                return False
            if step==1:
                if board[x][y]==color:
                    return False
            else:
                if board[x][y]==color:
                    return True
            step+=1
            x+=dx
            y+=dy
        return False
    
    dx = [1,1,0,-1,-1,-1,0,1]
    dy = [0,1,1,1,0,-1,-1,-1]
    for i in range(8):
        if check(dx[i],dy[i]):
            return True
    return False



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/781724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

26_嵌入式系统网络接口

以太网接口基本原理 IEEE802标准 局域网标准协议工作在物理层和数据链路层&#xff0c;其将数据链路层又划分为两层&#xff0c;从下到上分别为介质访问控制子层(不同的MAC子层&#xff0c;与具体接入的传输介质相关),逻辑链路控制子层(统一的LLC子层&#xff0c;为上层提供统…

CosyVoice多语言、音色和情感控制模型,one-shot零样本语音克隆模型本地部署(Win/Mac),通义实验室开源

近日&#xff0c;阿里通义实验室开源了CosyVoice语音模型&#xff0c;它支持自然语音生成&#xff0c;支持多语言、音色和情感控制&#xff0c;在多语言语音生成、零样本语音生成、跨语言声音合成和指令执行能力方面表现卓越。 CosyVoice采用了总共超15万小时的数据训练&#…

GuitarPro2024音乐软件#创作神器#音乐梦想

嘿&#xff0c;亲爱的朋友们&#xff01;&#x1f44b;&#x1f44b;&#x1f44b;今天我要给你们安利一款超赞的软件——Guitar Pro。这款软件简直是吉他手的福音啊&#xff01;&#x1f389;&#x1f389;&#x1f389; Guitar Pro免费绿色永久安装包下载&#xff1a;&#…

如何快速申请免费SSL证书,实现网站HTTPS安全传输

随着互联网技术的飞速发展&#xff0c;网络安全已成为不可忽视的重要议题。HTTPS协议&#xff0c;作为HTTP协议的安全版本&#xff0c;通过SSL协议加密客户端与服务器之间的数据传输&#xff0c;从而保障信息在传输过程中的安全性。对于网站运营者而言&#xff0c;为网站部署SS…

SpringBoot测试类注入Bean失败的原因

针对SpringBoot的测试类&#xff0c;2.2版本之前和之后是不一样的。 2.2版本之后 导包pom.xml 添加test依赖 <!-- starter-test&#xff1a;junit spring-test mockito --> <dependency><groupId>org.springframework.boot</groupId><artifac…

论文解析——FTRANS: Energy-Efficient Acceleration of Transformers using FPGA

作者及发刊详情 Li B , Pandey S , Fang H ,et al.FTRANS: energy-efficient acceleration of transformers using FPGA[J].ACM, 2020.DOI:10.1145/3370748.3406567. 摘要 正文 主要工作贡献 与CPU和GPU在执行Transformer和RoBERTa相比&#xff0c;提出的FTRANS框架获得了…

ansible常见问题配置好了密码还是报错

| FAILED! > { “msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.” } 怎么解决&#xf…

[终端安全]-3 移动终端之硬件安全(TEE)

&#xff08;参考资料&#xff1a;TrustZone for V8-A. pdf&#xff0c;来源ARM DEVELOPER官网&#xff09; TEE&#xff08;Trusted Execution Environment&#xff0c;可信执行环境&#xff09;是用于执行敏感代码和处理敏感数据的独立安全区域&#xff1b;以ARM TrustZone为…

分布式技术栈、微服务架构 区分

1.分布式技术栈 这些技术栈都是为了更好的开发分布式架构的项目。 &#xff08;大营销平台的系统框架如下图&#xff0c;扩展的分布式技术栈&#xff09; &#xff08;1&#xff09;Dubbo——分布式技术栈 DubboNacos注册中心是应用可以分布式部署&#xff0c;并且提供RPC接…

HTML5使用<pre>标签:保留原始排版方式

在网页创作中&#xff0c;一般是通过各种标记对文字进行排版的。但是在实际应用中&#xff0c;往往需要一些特殊的排版效果&#xff0c;这样使用标记控制起来会比较麻烦。解决的方法就是保留文本格式的排版效果&#xff0c;如空格、制表符等。 如果要保留原始的文本排版效果&a…

redis并发、穿透、雪崩

Redis如何实现高并发 首先是单线程模型&#xff1a;redis采用单线程可以避免多线程下切换和竞争的开销&#xff0c;提高cpu的利用率&#xff0c;如果是多核cpu&#xff0c;可以部署多个redis实例。基于内存的数据存储&#xff1a;redis将数据存储在内存中&#xff0c;相比于硬…

回溯算法-以景点门票销售管理系统为例

1.回溯算法介绍 1.来源 回溯算法也叫试探法&#xff0c;它是一种系统地搜索问题的解的方法。 用回溯算法解决问题的一般步骤&#xff1a; 1、 针对所给问题&#xff0c;定义问题的解空间&#xff0c;它至少包含问题的一个&#xff08;最优&#xff09;解。 2 、确定易于搜…

唤醒知识循环,共筑绿色阅读梦——探索旧书回收小程序的无限可能

在这个信息爆炸的时代&#xff0c;书籍作为知识与智慧的载体&#xff0c;其重要性不言而喻。然而&#xff0c;随着电子阅读的兴起和书籍更新换代的加速&#xff0c;大量旧书被束之高阁&#xff0c;甚至面临被遗弃的命运。这不仅是对宝贵文化资源的浪费&#xff0c;也是对环境保…

12 电商高并发缓存实战

序章 项目代码缓存的数据一致性 延时双删 淘汰缓存写数据库休眠1s,再次淘汰缓存缺点:如果mysql是主从复制,去从库中拿去数据,此时同步数据还未完成,拿到的数据是旧数据。 先更新 DB,后删除缓存 采用异步延时删除策略. ①利用消息队列进行删除的补偿。②Mysql 数据库更新操…

Android项目中,查看项目依赖树的多种方式

1.使用预设的Task来进行查看 1.1 命令行 查看某个模块的所有依赖树&#xff1a; gradlew [模块名称]:dependencies 例如&#xff1a;gradlew app:dependencies查看某个模块的某功能的依赖树&#xff1a; gradlew [模块名称]:dependencies --configuration [功能名称] 例如&…

华为路由器静态路由配置(eNSP模拟实验)

实验目标 如图下所示&#xff0c;让PC1ping通PC2 具体操作 配置PC设备ip 先配置PC1的ip、掩码、网关。PC2也做这样的配置 配置路由器ip 配置G0/0/0的ip信息 #进入系统 <Huawei>system-view #进入GigabitEthernet0/0/0接口 [Huawei]int G0/0/0 #设置接口的ip和掩码 […

排序 -- 万能测试oj

. - 力扣&#xff08;LeetCode&#xff09; 这道题我们可以使用我们学过的那些常见的排序方法来进行解答 //插入排序 void InsertSort(int* nums, int n) {for (int i 0; i < n-1; i){int end i;int tmp nums[end 1];while (end > 0){if (tmp < nums[end]){nums[…

阿里云ecs服务器,nginx多域名多项目部署教程,含本地部署教程

nginx多域名部署项目 本地部署线上部署一、本地部署 第一步:win+r 输入drivers 打开hosts文件,编辑 加行 127.0.0.1 自定义域名 … 第二步:下载 nginx 安装好以后 打开ngin安装目录,选择nginx.conf 打开 #user Administrator; worker_processes

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗&#xff0c;支持滑动消失&#xff0c; 滑动查看评论 效果如下图 思路 创建一个视图&#xff0c;该视图上面放置一个tableView, 该视图上添加一个滑动手势&#xff0c;同时设置代理&#xff0c;实现代理方法 (BOOL)gestur…

SLF4J的介绍与使用(有logback和log4j2的具体实现案例)

目录 1.日志门面的介绍 常见的日志门面 &#xff1a; 常见的日志实现&#xff1a; 日志门面和日志实现的关系&#xff1a; 2.SLF4J 的介绍 业务场景&#xff08;问题&#xff09;&#xff1a; SLF4J的作用 SLF4J 的基本介绍 日志框架的绑定&#xff08;重点&#xff09…