当前位置: 首页 > news >正文

LeetCode 每日一题 2024/10/28-2024/11/3

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


目录

      • 10/28 685. 冗余连接 II
      • 10/29 3211. 生成不含相邻零的二进制字符串
      • 10/30 3216. 交换后字典序最小的字符串
      • 10/31 3165. 不包含相邻元素的子序列的最大和
      • 11/1 3259. 超级饮料的最大强化能量
      • 11/2 3226. 使两个整数相等的位更改次数
      • 11/3638. 大礼包


10/28 685. 冗余连接 II

check用来检查是否满足
1.入度不能有大于1的
2.不能存在圈
先将所有点的父节点取出,如果存在有两个父节点 那么说明这个节点需要取出一条边 遍历后check是否正确
若正确 将结果暂存ret
判断ret,
若ret内有多个 则取出位置最靠后的作为结果
若ret==0:
所有节点入度都正常 说明存在圈 从后往前去除一个点 check是否正常 若正常则答案为这个点

def findRedundantDirectedConnection(edges):""":type edges: List[List[int]]:rtype: List[int]"""def find(p,x):while p[x] != x:p[x] = p[p[x]]x = p[x]return p[x]# 判断给定的图是不是有圈def cycle(graph):p = {}for a, b in graph:p.setdefault(a, a)p.setdefault(b, b)pa, pb = find(p, a), find(p, b)print([a,b],p,pa,pb)if pa == pb: return(True)else:p[pa] = p[pb]dic={}ans=[]ret =[]def check(l):#入度不能大于1endpoint = [y for x,y in l]if len(endpoint)!=len(set(endpoint)):return Falsedef find(p,x):while p[x] != x:p[x] = p[p[x]]x = p[x]return p[x]# 判断给定的图是不是有圈def cycle(graph):p = {}for a, b in graph:p.setdefault(a, a)p.setdefault(b, b)pa, pb = find(p, a), find(p, b)if pa == pb: return(True)else:p[pa] = p[pb]if cycle(l):return Falsereturn Truefor v in edges:top = v[0]end = v[1]dic.setdefault(end,[])dic[end].append(top)for k in dic.keys():if len(dic[k])>1:for v in dic[k]:ori = edges[:]tmp=[v,k]ori.pop(ori.index(tmp))if check(ori):ret.append(tmp)if len(ret)==0:for i in range(len(edges)-1,-1,-1):ori = edges[:]ori.pop(i)if check(ori):ans = edges[i]breakelse:pos = -1for i in ret:if edges.index(i)>pos:pos = edges.index(i)ans = i    return ans

10/29 3211. 生成不含相邻零的二进制字符串

所有长度为2的子字符串至少有一个1 说明不存在连续的两个0
将二进制按位取反为x 判断不存在连续两个1
如果x&(x>>1)=0 说明x没有连续的两个1

def validStrings(n):""":type n: int:rtype: List[str]"""ans = []mask = (1<<n)-1for i in range(1<<n):t = mask^iif (t>>1 & t)==0:ans.append(f"{i:0{n}b}")return ans

10/30 3216. 交换后字典序最小的字符串

从前往后寻找
找到首次出现满足前面数字比后面大的就交换

def getSmallestString(s):""":type s: str:rtype: str"""l=list(s)n=len(s)for i in range(n-1):if int(l[i])%2==int(l[i+1])%2 and l[i]>l[i+1]:l[i],l[i+1]=l[i+1],l[i]breakreturn ''.join(l)

10/31 3165. 不包含相邻元素的子序列的最大和

将数组分为两段 每一段的首尾都有不选 或 可选两种情况
一共就有四种情况
00:首不选 尾不选
01:首不选 尾可选
10:首可选 尾不选
11:首可选 尾可选
将某数组x分为前后a,b两段 分别讨论四种情况
f(x)为x数组不相邻子序列最大和
f00(x) = max(f01(a)+f00(b),f00(a)+f10(b))
f01(x) = max(f00(a)+f11(b),f01(a)+f01(b))
f10(x) = max(f10(a)+f10(b),f11(a)+f00(b))
f11(x) = max(f10(a)+f11(b),f11(a)+f01(b))
用线段树来实现单点的修改 每个节点维护对应区间f(X)

def maximumSumSubsequence(nums, queries):""":type nums: List[int]:type queries: List[List[int]]:rtype: int"""MOD=10**9+7n=len(nums)tr = [[0]*4 for _ in range(2<<n.bit_length())]def maxv(a,b):return b if b>a else adef merg(k):a,b = tr[k*2],tr[k*2+1]tr[k][0] = max(a[0]+b[2],a[1]+b[0])tr[k][1] = max(a[0]+b[3],a[1]+b[1])tr[k][2] = max(a[2]+b[2],a[3]+b[0])tr[k][3] = max(a[2]+b[3],a[3]+b[1])def build(k,l,r):if l==r:tr[k][3]=maxv(nums[l],0)returnm=(l+r)//2build(k*2,l,m)build(k*2+1,m+1,r)merg(k)def change(k,l,r,i,val):if l==r:tr[k][3]=max(val,0)returnm=(l+r)//2if i<=m:change(k*2,l,m,i,val)else:change(k*2+1,m+1,r,i,val)merg(k)build(1,0,n-1)ans = 0for i,val in queries:change(1,0,n-1,i,val)ans = (ans+tr[1][3])%MODreturn ans

11/1 3259. 超级饮料的最大强化能量

动态规划 f[i][0/1]代表第i步喝A/B获得的最大值

def maxEnergyBoost(energyDrinkA, energyDrinkB):""":type energyDrinkA: List[int]:type energyDrinkB: List[int]:rtype: int"""n=len(energyDrinkA)f = [[0,0] for _ in range(n+1)]for i in range(1,n+1):f[i][0] = f[i-1][0]+energyDrinkA[i-1]f[i][1] = f[i-1][1]+energyDrinkB[i-1]if i>1:f[i][0] = max(f[i][0],f[i-2][1]+energyDrinkA[i-1])f[i][1] = max(f[i][1],f[i-2][0]+energyDrinkB[i-1])return max(f[n][0],f[n][1])

11/2 3226. 使两个整数相等的位更改次数

按位判断

def minChanges(n, k):""":type n: int:type k: int:rtype: int"""ans = 0while n>0 or k>0:if (n&1)==0 and (k&1)==1:return -1if (n&1)==1 and (k&1)==0:ans+=1n>>=1k>>=1return ans

11/3638. 大礼包

过滤掉不需要的套餐 保留有用套餐
dfs 遍历选取每一种套餐的情况
算出不买套餐的价格base
如果买套餐实惠则替换价格

def shoppingOffers(price, special, needs):""":type price: List[int]:type special: List[List[int]]:type needs: List[int]:rtype: int"""n = len(price)fsp = []for sp in special:if sum(sp[i]*price[i] for i in range(n))>sp[n]:fsp.append(sp)def dfs(curneed):base = sum(curneed[i]*price[i] for i in range(n))for cursp in fsp:p = cursp[n]netneed = []for i in range(n):if cursp[i]>curneed[i]:breaknetneed.append(curneed[i]-cursp[i])if len(netneed)==n:base = min(base,dfs(netneed)+p)return basereturn dfs(needs)

相关文章:

LeetCode 每日一题 2024/10/28-2024/11/3

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/28 685. 冗余连接 II10/29 3211. 生成不含相邻零的二进制字符串10/30 3216. 交换后字典序最小的字符串10/31 3165. 不包含相邻元素的子序列的最大和11/1 3259. 超级饮料…...

基于Spring Boot和Vue的电子商城系统功能设计

基于Spring Boot和Vue的电子商城系统功能设计 该系统是一个基于Spring Boot和Vue框架的电子商城平台&#xff0c;包含前台商城和后台管理系统。系统功能设计包括用户购物体验和管理员管理功能&#xff0c;支持商品的分类展示、收藏、购物车和订单管理等模块。以下是系统功能的简…...

成都睿明智科技有限公司正规吗靠谱吗?

在这个短视频风起云涌的时代&#xff0c;抖音电商以其独特的魅力&#xff0c;成为了无数商家竞相追逐的新蓝海。而在这片浩瀚的商海中&#xff0c;成都睿明智科技有限公司犹如一艘装备精良的航船&#xff0c;引领着众多企业破浪前行&#xff0c;探索抖音电商的无限可能。今天&a…...

【天线&化学】航拍图屋顶异常检测系统源码&数据集全套:改进yolo11-ContextGuided

改进yolo11-ContextGuided等200全套创新点大全&#xff1a;航拍图屋顶异常检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系…...

【回忆】JavaScript 中的 Map 有哪些方法

在 JavaScript 中&#xff0c;Map 对象是一种键值对的集合&#xff0c;类似于对象&#xff0c;但“键”可以是任何数据类型&#xff08;对象或原始值&#xff09;。Map 提供了多种方法来操作这些键值对。以下是 Map 对象的一些常用方法&#xff1a; 创建和初始化 new Map(): …...

Chrome与夸克的安全性对比

在当今数字化时代&#xff0c;浏览器的安全性对于用户来说至关重要。Chrome和夸克作为两款流行的浏览器&#xff0c;各有其特点和优势。本文将对这两款浏览器的安全性进行详细对比&#xff0c;帮助用户更好地了解它们之间的差异。&#xff08;本文由https://www.chromegw.com/的…...

使用Python可视化支持向量机(SVM)

支持向量机&#xff08;SVM&#xff09;是用于分类和回归任务的强大监督学习模型。它们受欢迎背后的一个关键因素是它们有效处理线性和非线性数据的能力。在本文中&#xff0c;我们将探索使用Python和流行的库&#xff08;如scikit-learn和Matplotlib&#xff09;可视化SVM。 …...

C++泛型编程

一、什么是泛型编程 泛型编程 是一种编程范式&#xff0c;它通过编写可以处理多种数据类型的代码来实现代码的灵活复用。泛型编程主要通过模板来实现。 比如我们日常使用的容器类型vector就应用了模板来实现其通用性&#xff0c;我们在使用时可以通过传入型别创建对应的动态数…...

【论文分享】利用大量街景图片研究街道空间质量与建筑环境属性之间的关联

本研究通过有序逻辑回归模型&#xff0c;结合街景图片和街道数据&#xff0c;分析了街道空间质量与建筑环境属性的关系。通过Kappa分析和相关性分析&#xff0c;确定了影响街道空间质量的因素&#xff0c;并绘制了质量分布图。这些因素与街道质量的不同维度相关联&#xff0c;对…...

【Linux第七课--基础IO】内存级文件、重定向、缓冲区、文件系统、动态库静态库

目录 引入内存级文件重新使用C文件接口 -- 对比重定向写文件读文件文件流 认识文件操作的系统接口open参数 -- flagflag的内容宏的传参方式 open关闭文件写文件读文件结论 引入文件描述符fd、对文件的理解理解一切皆文件方法集文件fd的分配规则 重定向代码的重定向输入重定向输…...

对比C/C++语言,Rust语言有什么优势?

Rust语言相较于C/C语言有以下几个主要优势&#xff1a; 1. 内存安全&#xff1a;Rust通过其所有权系统和借用规则在编译时捕获许多常见的内存安全错误&#xff0c;如空指针引用和数据竞争&#xff0c;避免了许多常见的安全漏洞。这与C/C不同&#xff0c;后者通常需要手动管理内…...

Rust语言有哪些数据类型?

Rust语言的数据类型主要包括以下几种&#xff1a; 一、基本数据类型 1. 整数类型 i8, i16, i32, i64, i128: 有符号整数 u8, u16, u32, u64, u128: 无符号整数 isize, usize: 根据平台选择大小的整数&#xff08;通常用于指针和索引&#xff09; 2. 浮点数类型 f32: 32位浮…...

【论文笔记】Attention Prompting on Image for Large Vision-Language Models

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Attention Prompting on I…...

VScode设置系统界面字体

现象&#xff1a; 系统界面字体太大&#xff0c;导致菜单栏字体显示不全&#xff0c;每次使用都要先点然后才能打开终端和帮助 缩小字体应该就可以实现全部都看到的效果 步骤 Window: Zoom Level 调整所有窗口的默认缩放级别。大于“0”的每个增量&#xff08;例如“1”&…...

Java中常见的异常类型

1、Exception和Error有什么区别&#xff1f; 首先Exception和Error都是继承于Throwable类&#xff0c;在Java中只有Throwable类型的实例才可以被抛出&#xff08;throw&#xff09;或者捕获&#xff08;catch&#xff09;&#xff0c;它是异常处理机制的基本组成类型。 Except…...

Java学习Day58:相声二人组!(项目统计数据Excel图表导出)

<!DOCTYPE html> <html xmlns"http://www.w3.org/1999/html"><head><!-- 页面meta --><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>瑞通健康</tit…...

springboot 自动装配和bean注入原理及实现

装配&#xff1a;创建bean&#xff0c;并加入IOC容器。 注入&#xff1a;创建bean之间的依赖关系。 1、类自动装配 SpringBoot 自动装配使得开发人员可以轻松地搭建、配置和运行应用程序&#xff0c;而无需手动管理大部分的 bean 和配置。 Spring Boot 的自动装配机制与模块…...

解决Redis缓存穿透(缓存空对象、布隆过滤器)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 缓存空对象布隆过滤器结合两种方法 背景 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库 常见的解决方案有两种&#xff0c;分别…...

初探Flink的序列化

Flink中的序列化应用场景 程序通常使用(至少)两种不同的数据表示形式[2]&#xff1a; 1. 在内存中&#xff0c;数据保存在对象、结构体、列表、数组、哈希表和树等结构中。 2. 将数据写入文件或通过网络发送时&#xff0c;必须将其序列化为字节序列。 从内存中的表示到字节序列…...

QT 机器视觉 (3. 虚拟相机SDK、测试工具)

本专栏从实际需求场景出发详细还原、分别介绍大型工业化场景、专业实验室场景、自动化生产线场景、各种视觉检测物体场景介绍本专栏应用场景 更适合涉及到视觉相关工作者、包括但不限于一线操作人员、现场实施人员、项目相关维护人员&#xff0c;希望了解2D、3D相机视觉相关操作…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...