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

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

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

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

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

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

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

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

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

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

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

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

【论文笔记】Attention Prompting on Image for Large Vision-Language Models
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Attention Prompting on I…...

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

Java中常见的异常类型
1、Exception和Error有什么区别? 首先Exception和Error都是继承于Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。 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注入原理及实现
装配:创建bean,并加入IOC容器。 注入:创建bean之间的依赖关系。 1、类自动装配 SpringBoot 自动装配使得开发人员可以轻松地搭建、配置和运行应用程序,而无需手动管理大部分的 bean 和配置。 Spring Boot 的自动装配机制与模块…...

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

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

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

1分钟解决Excel打开CSV文件出现乱码问题
一、编码问题 1、不同编码格式 CSV 文件有多种编码格式,如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码,而 Excel 默认使用的是 ANSI 编码打开,就可能出现乱码。例如,许多从网络应用程序或非 Windows 系统生成的 …...

基于SpringBoot+Vue的仓库管理系统【前后端分离】
基于SpringBootVue的仓库管理系统设计与实现 摘要 仓库管理系统在现代企业物流中具有重要作用,能够有效提高库存管理效率,优化资源配置。本系统采用Spring Boot作为后端框架,Vue作为前端框架,通过前后端分离的开发模式构建一个现代…...

vue和django接口联调
vue访问服务端接口 配置跨域 前端跨域 打开vite.config.js,在和resolve同级的地方添加配置。 proxy代表代理的意思 "/api"是以/api开头的路径走这个配置 target代表目标 changeOrigin: true,是开启跨域请求 rewrite是编辑路径。 (path) > pa…...

2-141 怎么实现ROI-CS压缩感知核磁成像
怎么实现ROI-CS压缩感知核磁成像,这个案例告诉你。基于matlab的ROI-CS压缩感知核磁成像。ROI指在图像中预先定义的特定区域或区域集合,选择感兴趣的区域,通过减少信号重建所需的数据来缩短信号采样时间,减少计算量,并在…...

开源库 FloatingActionButton
开源库FloatingActionButton Github:https://github.com/Clans/FloatingActionButton 这个库是在前面这个库android-floating-action-button的基础上修改的,增加了一些更强大和实用的特性。 特性: Android 5.0 以上点击会有水波纹效果 可以选择自定义…...

技术选型不当对项目的影响与补救措施
在项目管理中,初期技术选型与项目需求不匹配的情况并不罕见,这可能导致项目延误、成本增加和最终成果的不理想。补救的关键措施包括:重新评估技术选型、加强团队沟通、实施有效的需求管理以及建立持续的反馈机制。其中,重新评估技…...

Spring的核心类: BeanFactory, ApplicationContext 笔记241103
Spring的核心类: BeanFactory, ApplicationContext, ConfigurableApplicationContext, WebApplicationContext, WebServerApplicationContext, ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, XmlWebApplicationContext, AnnotationConfigServletWebServer…...

UE5移动端主要对象生命周期及监听
1、GameInstance 1、首先加载GameInstance,全局唯一,切换Map也是唯一的,用于做一些全局操作,比如监听Map加载,监听App进入前台、退出后台 // Fill out your copyright notice in the Description page of Project Settings.#include "Core/Base/MyGameInstance.h&q…...

LLM | 论文精读 | CVPR | SelTDA:将大型视觉语言模型应用于数据匮乏的视觉问答任务
论文标题:How to Specialize Large Vision-Language Models to Data-Scarce VQA Tasks? Self-Train on Unlabeled Images! 作者:Zaid Khan, Vijay Kumar BG, Samuel Schulter, Xiang Yu, Yun Fu, Manmohan Chandraker 期刊:CVPR 2023 DOI…...

kafka里的consumer 是推还是拉?
大家好,我是锋哥。今天分享关于【kafka里的consumer 是推还是拉?】面试题?希望对大家有帮助; kafka里的consumer 是推还是拉? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,消费者&…...