LeetCode 每日一题 2024/9/23-2024/9/29
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
目录
- 9/23 2414. 最长的字母序连续子字符串的长度
- 9/24 2207. 字符串中最多数目的子序列
- 9/25 2306. 公司命名
- 9/26 2535. 数组元素和与数字和的绝对差
- 9/27 2516. 每种字符至少取 K 个
- 9/28 2286. 以组为单位订音乐会的门票
- 9/29
9/23 2414. 最长的字母序连续子字符串的长度
依次遍历 cur记录当前满足条件的字符串长度
如果当前字符s[i]比前一个字符字母序大1则满足条件 cur+1
def longestContinuousSubstring(s):""":type s: str:rtype: int"""ans = 1cur = 1for i in range(1,len(s)):if ord(s[i])-ord(s[i-1])==1:cur+=1else:cur=1ans=max(ans,cur)return ans
9/24 2207. 字符串中最多数目的子序列
为了使得增加一个字符增加的子序列最多
pattern[0]加在开头 pattern[1]加在结尾
从头遍历 统计pattern[0],[1]出现次数p0.p1
遇到pattern[1] 说明该字符可以与前边的pattern[0]组合成p0个子序列
最后 哪个多那就添加另外一个字符 增加max(p0,p1)个子序列
def maximumSubsequenceCount(text, pattern):""":type text: str:type pattern: str:rtype: int"""p0,p1=0,0ans =0for c in text:if c==pattern[1]:ans += p0p1+=1if c==pattern[0]:p0+=1return ans+max(p0,p1)
9/25 2306. 公司命名
首字母相同的公司必定不满足条件
按首字母将idea分类
m[h]存储以字母h为首字母的剩余字符
遍历所有首字母
h1,h2中有后续字符序列s1,s2
只有不在s1,s2交集中的序列才可以相互组合
(s1-s1&s2)*(s2-s1&s2)
def distinctNames(ideas):""":type ideas: List[str]:rtype: int"""from collections import defaultdictm = defaultdict(set)for s in ideas:m[s[0]].add(s[1:])ans = 0for h1,s1 in m.items():for h2,s2 in m.items():if h1==h2:continuesame = len(s1&s2)ans +=(len(s1)-same)*(len(s2)-same)return ans
9/26 2535. 数组元素和与数字和的绝对差
依次求出元素和 数字和
def differenceOfSum(nums):""":type nums: List[int]:rtype: int"""s0=0s1=0for num in nums:s0+=numwhile num:s1+=num%10num//=10return s0-s1
9/27 2516. 每种字符至少取 K 个
取走左右两侧 中间部分必定是连续的
可以用双指针考虑中间部分区间
中间部分越长 则取走的次数越少
def takeCharacters(s, k):""":type s: str:type k: int:rtype: int"""n=len(s)if n<3*k:return -1cnt={'a':0,'b':0,'c':0}for c in s:cnt[c]+=1if cnt['a']<k or cnt['b']<k or cnt['c']<k:return -1ans = len(s)l = 0for r,c in enumerate(s):cnt[c]-=1while l<r and (cnt['a']<k or cnt['b']<k or cnt['c']<k):cnt[s[l]]+=1l+=1if cnt['a']>=k and cnt['b']>=k and cnt['c']>=k:ans = min(ans,n-(r-l+1))return ans
9/28 2286. 以组为单位订音乐会的门票
线段树minT,sumT记录区间[l,r]排之间 每一排最小已坐位置 和 已坐位置数之和
见题解https://leetcode.cn/problems/booking-concert-tickets-in-groups/solutions/2930664/yi-zu-wei-dan-wei-ding-yin-le-hui-de-men-ay7o
class BookMyShow(object):def __init__(self, n, m):""":type n: int:type m: int"""self.n = nself.m = mself.minT = [0]*(4*n)self.sumT = [0]*(4*n)def modify(self,i,l,r,ind,val):if l==r:self.minT[i]=valself.sumT[i]=valreturnmid=(l+r)//2if ind<=mid:self.modify(i*2,l,mid,ind,val)else:self.modify(i*2+1, mid+1, r, ind, val)self.minT[i]=min(self.minT[i*2],self.minT[i*2+1])self.sumT[i]=self.sumT[i*2]+self.sumT[i*2+1]def queryMin(self,i,l,r,val):if l==r:return l if self.minT[i]<=val else self.nmid = (l+r)//2if self.minT[i*2]<=val:return self.queryMin(i*2,l,mid,val)else:return self.queryMin(i*2+1,mid+1,r,val)def querySum(self,i,l,r,l2,r2):if l2<=l and r<=r2:return self.sumT[i]mid=(l+r)//2s=0if mid>=l2:s+=self.querySum(i*2, l, mid, l2, r2)if mid+1<=r2:s+=self.querySum(i*2+1, mid+1, r, l2, r2)return sdef gather(self, k, maxRow):""":type k: int:type maxRow: int:rtype: List[int]"""i = self.queryMin(1, 0, self.n-1, self.m-k)if i>maxRow:return []used = self.querySum(1, 0, self.n-1, i, i)self.modify(1, 0, self.n-1, i, used+k)return [i,used]def scatter(self, k, maxRow):""":type k: int:type maxRow: int:rtype: bool"""total = self.querySum(1, 0, self.n-1, 0, maxRow)if (maxRow+1)*self.m-total<k:return Falsei = self.queryMin(1, 0, self.n-1, self.m-1)while True:used = self.querySum(1, 0, self.n-1, i, i)if self.m-used>=k:self.modify(1, 0, self.n-1, i, used+k)breakk-=self.m-usedself.modify(1, 0, self.n-1, i, self.m)i+=1return True
9/29
相关文章:
LeetCode 每日一题 2024/9/23-2024/9/29
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/23 2414. 最长的字母序连续子字符串的长度9/24 2207. 字符串中最多数目的子序列9/25 2306. 公司命名9/26 2535. 数组元素和与数字和的绝对差9/27 2516. 每种字符至少取 K…...
知识付费APP开发指南:基于在线教育系统源码的技术详解
本篇文章,我们将探讨基于在线教育系统源码的知识付费APP开发的技术细节,帮助开发者和企业快速入门。 一、选择合适的在线教育系统源码 选择合适的在线教育系统源码是开发的关键一步。市场上有许多开源和商业化的在线教育系统源码,开发者需要…...
物联网智能项目全面解析
目录 引言 一、物联网概述 1.1 什么是物联网 1.2 物联网的历史与发展 二、物联网智能项目分类 三、关键组件与技术 3.1 传感器和执行器 3.2 连接技术 3.3 数据处理与分析 3.4 用户界面 四、物联网智能项目案例分析 4.1 智能家居 4.2 智慧城市 4.3 工业物联网 4.4…...
【07】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Swiper轮播组件与样式结构重用
序言: 本文详细讲解了关于我们在页面上经常看到的轮播图在鸿蒙开发中如何用Swiper实现,介绍了Swiper的基本用法与属性,及如何面对大段的重复代码进行封装和重用(Extend、Styles、Builder),使代码更加简洁易…...
Springboot3保存日志到数据库
保存日志到数据库 请求日志几乎是所有大型企业级项目的必要的模块,请求日志对于我们来说后期在项目运行上线一段时间用于排除异常、请求分流处理、限制流量等。请求日志一般都会记录请求参数、请求地址、请求状态(Status Code)、SessionId、…...
叉车高位显示器无线摄影,安装更加便捷!
叉车叉货,基本功能,但货叉升降高度确不一定,普通的3米左右,高的十几米,特别是仓储车,仓库叉货空间小,环境昏暗,视线受阻严重,司机叉货升的那么高怎么准确无误的插到货呢&…...
模板的特化
模板的特化 1.概念2.函数模板特化3.类模板的特化3.1 全特化3.2 偏特化3.2.1 部分特化3.2.2 参数更进一步的限制 4.总结 1.概念 在原模板类的基础上,针对特殊类型所进行特殊化的实现方式 2.函数模板特化 步骤 1.必须要先有一个基础的函数模板 2.关键字 template后面接…...
PCIE总线架构
1 概述 PCIe总线(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,它是基于PCI总线的一种升级版,现在已经被广泛应用于各种高性能的计算机和服务器系统中。 PCIe总线提供更高的数据传输速度和更先进的特性,它主要特点如下: 高带宽:提供比…...
Adobe PR与AE的区别与联系(附网盘地址)
从事视频后期制作的小伙伴,对于PR(Premiere)和AE(After Effects)应该不会陌生。随着短视频的兴起,就连我们普通用户,拍摄完视频,都会去糟取精的剪辑一下,而PR正是一款功能…...
【QT 5 调试软件+Linux下调用脚本shell-无法调度+目录拼写+无法找目录+sudo权限(2)+问题解决方式+后续补充】
【QT 5 调试软件Linux下调用脚本shell-无法调度目录拼写无法找目录sudo权限(2)问题解决方式后续补充】 1、前言2、问题综述:自研qt上位机无法调度脚本(1)可能原因1:无法找到目录情况说明:解决思…...
企业防泄密妙招有哪些?请记住这8招!超实用,学起来!
在古代,有云:“密者,德之高也;事以密成,语以泄败。” 这些谚语不仅是对忠诚守密的高度赞扬,更是对保密工作重要性的深刻阐述。 在现代企业中,数据泄露已成为不容忽视的严峻挑战。 如何有效防止…...
pytorch千问模型源码分析
# 规范化技术,旨在替代传统的 Layer Normalization(LN) # 核心思想是对输入张量的每个样本的每个特征进行规范化,使其均值为 0,方差为 1 class Qwen2RMSNorm(nn.Module): def __init__(self, hidden_size, eps1e-6…...
滚雪球学SpringCloud[1.3]:SpringCloud环境搭建
全文目录: 前言1.3.1 环境要求1. JDK2. Maven3. IDE4. 其他工具 1.3.2 初始化Spring Boot项目方法一:使用Spring Initializr方法二:使用IDE项目结构 1.3.3 引入Spring Cloud依赖1. 更新pom.xml2. 添加Spring Cloud Starter依赖3. 示例完整的p…...
9.28今日错题解析(软考)
目录 前言面向对象技术——UML软件工程——软件能力成熟度模型(CMM)程序设计语言——编译 前言 这是用来记录我备考软考设计师的错题的,今天知识点为UML、软件能力成熟度模型(CMM)和编译,大部分错题摘自希…...
【Vue】以RuoYi框架前端为例,ElementUI封装图片上传组件——将图片信息转成base64后提交到后端保存
RuoYi 框架本身对于图片上传功能,在ElementUI的 <el-upload> 组件的基础装封装了 /components/ImageUpload/index.vue 组件。本组件就是在 RuoYi 自定义的 <ImageUpload> 组件的基础上进行改造,将图片的信息在上传之前处理成 base64 格式&am…...
【Linux】驱动的基本架构和编译
驱动源码 /** Silicon Integrated Co., Ltd haptic sih688x haptic driver file** Copyright (c) 2021 kugua <daokuan.zhusi-in.com>** This program is free software; you can redistribute it and/or modify it* under the terms of the GNU General Public Licen…...
1013. 将数组分成和相等的三个部分 数组切分
1013. 将数组分成和相等的三个部分 已解答 简单 相关标签 相关企业 提示 给你一个整数数组 arr,只有可以将其划分为三个和相等的 非空 部分时才返回 true,否则返回 false。 形式上,如果可以找出索引 i 1 < j 且满足 (arr[0] arr[…...
【深度学习】—— 自动微分、非标量变量的反向传播、 分离计算、 Python控制流的梯度计算
【深度学习】—— 自动微分 自动微分一个简单的例子 非标量变量的反向传播分离计算Python控制流的梯度计算 自动微分 求导是⼏乎所有深度学习优化算法的关键步骤。虽然求导的计算很简单,只需要⼀些基本的微积分。但对于复杂的模型,⼿⼯进⾏更新是⼀件很…...
Java项目实战II基于Java+Spring Boot+MySQL的大学城水电管理系统(源码+数据库+文档)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 随着大学城规模的不断扩大和学生数量的急剧增加,大学城内的水电管理面临着前所未有的挑战…...
Vue 组件的三大组成部分详解
文章目录 模板(template)脚本(script)样式(style)总结 在 Vue.js 中,组件是构建用户界面的重要基石。一个 Vue 组件通常由三个主要部分组成:模板(template)、…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
