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 defaultdictg = defaultdict(list)for x,y,t in edges:g[x].append((y,t))g[y].append((x,t))visited = {0}global ansans = 0def dfs(u,t,va):global ansif 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,-1for i in range(n):if nums[i] in primes:left = ibreakfor i in range(n-1,-1,-1):if nums[i] in primes:right = ibreakreturn right-left

7/3 3099. 哈沙德数

按定义求和 取余

def sumOfTheDigitsOfHarshadNumber(x):""":type x: int:rtype: int"""num = xv = 0while x>0:v += x%10x //=10return 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,-1lefts,rights=0,0leftc,rightc=0,0ans = 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:continuewhile right+1<n and (right-i<i-left or leftc+rightc+maxChanges<k):if nums[right+1]==1:rightc+=1rights+=right+1right+=1while leftc+rightc+maxChanges>k:if right-i<i-left or right-i==i-left and nums[left]==1:if nums[left]==1:leftc-=1lefts-=leftleft+=1else:if nums[right]==1:rightc-=1rights-=rightright-=1ans = min(ans,leftc*i-lefts+rights-rightc*i+2*maxChanges)if nums[i]==1:leftc+=1lefts+=irightc-=1rights-=ireturn 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=-1for 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]=maxvreturn matrix

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

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

def countAlternatingSubarrays(nums):""":type nums: List[int]:rtype: int"""ans = 0cur = 0pre =-1for num in nums:if pre!=num:cur+=1else:cur=1pre=numans+=curreturn 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+dystep = 1while 0<=x<8 and 0<=y<8:if board[x][y]=='.':return Falseif step==1:if board[x][y]==color:return Falseelse:if board[x][y]==color:return Truestep+=1x+=dxy+=dyreturn Falsedx = [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 Truereturn False

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一周周日总结

题目总结 1.给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时…

C# MathNet

Vector使用 Build.Dense 创建列向量:列向量转行向量&#xff08;行矩阵&#xff09;:使用 DenseOfArray 方法:使用 PointwiseMultiply 进行向量元素级乘法:计算向量的点积&#xff08;内积&#xff09;&#xff1a;访问向量的特定元素&#xff1a;遍历向量中的所有元素&#xf…

公众号文章阅读20w+?你猜腾讯给了我多少钱?

前两天写的一篇文章&#xff0c; 《1000T的文件怎么能快速从南京传到北京&#xff1f;最佳方案你肯定想不到》 一不小心被平台推荐&#xff0c;阅读量居然达到了20w&#xff08;这篇收益在文章底部&#xff01;&#xff09;。 留言也是相当精彩 说来惭愧&#xff0c;这篇文章我…

【74LS163做24进制计数器】2021-11-19

缘由用74LS163做24进制计数器-其他-CSDN问答,仿真multisim两个74LS163芯片如何构成47进制计数器-吐槽问答-CSDN问答 参考74ls163中文资料汇总&#xff08;74ls163引脚图及功能_内部结构图及应用电路&#xff09; - 电子发烧友网

苍穹外卖 ...待更新

苍穹外卖 1、 阿里云OSS2、菜品分类查询 1、 阿里云OSS 工具类 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

深入理解Qt智能指针

目录 1.引言 2.共享数据 2.1.特点 2.2.QSharedData 2.3.隐式共享 2.4.显示共享 3.共享指针 3.1.QSharedPointer 3.2.QWeakPointer 4.范围指针 4.1.QScopedPointer 4.2.QScopedArrayPointer 5.追踪特定QObject对象生命 6.总结 1.引言 在 Qt 中&#xff0c;智能指针…

计算样本之间的相似度

文章目录 前言一、距离度量1.1 欧几里得距离&#xff08;Euclidean Distance&#xff09;1.2 曼哈顿距离&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距离&#xff08;Chebyshev Distance&#xff09;1.4 闵可夫斯基距离&#xff08;Minkowski Distance&#xff09…

docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤

容器技术 容器借鉴了集装箱的概念&#xff0c;集装箱解决了什么问题呢&#xff1f;无论形状各异的货物&#xff0c;都可以装入集装箱&#xff0c;集装箱与集装箱之间不会互相影响。由于集装箱是标准化的&#xff0c;就可以把集装箱整齐摆放起来&#xff0c;装在一艘大船把他们…

浏览器插件利器-allWebPluginV2.0.0.14-stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…

Spring Boot+Blockchain:区块链入门Demo

1. 引言 区块链技术近年来迅速发展&#xff0c;其去中心化、不可篡改和透明性等特点吸引了众多开发者和企业的关注。为了便于理解和应用区块链技术&#xff0c;本文将介绍如何使用Spring Boot集成区块链&#xff0c;构建一个简单的区块链Demo。 2. 项目准备 2.1 环境要求 在…

MYSQL安装及环境配置

1.数据库下载 1.1 浏览器下载相应版本&#xff0c;如果相应版本不在此页&#xff0c;可点击Archives &#xff0c;然后选择相应版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目录&#xff0c;并将其解压 2.配置数据库环境变量 2.1 使用电脑win键 Q &#xff0c;…

在C++中使用的错误处理策略

在C中&#xff0c;错误处理是一个重要且复杂的主题&#xff0c;因为它要求开发者在设计和编码时考虑到程序可能遇到的各种异常情况。C提供了几种不同的机制来处理错误&#xff0c;每种机制都有其适用的场景和优缺点。下面我将概述几种常见的C错误处理策略&#xff1a; 1. 返回…

SQL的时间格式和文本灵活转换

日期的格式&#xff0c;在日常的数据分析中&#xff0c;常常使用 特别是在按照日、月、年进行汇总分析&#xff0c;使用起来&#xff0c;往往会有差异 如果格式比较复杂&#xff0c;可以考虑进行文本转化的处理 这里有比较推荐的函数&#xff1a; 1.CONVERT()函数 适用于SQL …

51单片机STC89C52RC——16.1 五项四线步进电机

目的/效果 让步进电机 正向转90度&#xff0c;逆向转90度 一&#xff0c;STC单片机模块 二&#xff0c;步进电机 2.2 什么是步进电机&#xff1f; 步进电机可以理解为&#xff1a;是一个按照固定步幅运动的“小型机器”。它与普通电机不同点在于&#xff0c;普通电机可以持…

CompletionService

必备知识&#xff1a; 三种创建线程的方式 java线程池 CompletionService是Java并发库中的一个接口&#xff0c;用于简化处理一组异步任务的执行和结果收集。它结合了Executor和BlockingQueue的功能&#xff0c;帮助管理任务的提交和完成。CompletionService的主要实现类是Exe…

前端必修技能:高手进阶核心知识分享 - CSS 阴影属性详解

CSS 涉及设计到阴影的相关内容包括三个方面&#xff1a;box-shadow属性&#xff08;盒子阴影&#xff09;、 text-shadow属性&#xff08;文本阴影&#xff09;、drop-shadow滤镜。 本篇文章旨在详细介绍和分析三种阴影的具体参数设置和典型用例。 box-shadow属性&#xff08;…

预防临床预测模型中可能的“算法歧视”

预防临床预测模型中可能的“算法歧视” 概要&#xff1a;如果训练数据中存在性别方面的不均衡&#xff0c;会让训练出的模型存在性别方面的“算法歧视”&#xff0c;进而导致某种性别下存在更多的误诊误治&#xff0c;最终造成医疗资源分配的不公平的伦理问题&#xff0c;导致模…

04.C1W3.Vector Space Models

往期文章请点这里 目录 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

STM32-SPI和W25Q64

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. SPI&#xff08;串行外设接口&#xff09;通信1.1 SPI通信简介1.2 硬件电路1.3 移位示意图1.4 SPI时序基本单元1.5 SPI时序1.5.1 发送指令1.5.2 指定地址写1.5.3 指定地址读 2. W25Q642.1 W25Q64简介2.2 硬件电路2…

嵌入式C语言面试相关知识——内存管理(不定期更新)

嵌入式C语言面试相关知识——内存管理&#xff08;不定期更新&#xff09; 一、博客声明二、自问题目1、嵌入式系统的内存布局是怎么样的&#xff1f;2、动态内存分配在嵌入式系统中的使用有什么注意事项&#xff1f;3、什么是内存碎片&#xff0c;如何减少内存碎片&#xff1f…