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

LeetCode 每日一题 2025/2/24-2025/3/2

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


目录

      • 2/24 1656. 设计有序流
      • 2/25 2502. 设计内存分配器
      • 2/26 1472. 设计浏览器历史记录
      • 2/27 2296. 设计一个文本编辑器
      • 2/28 2353. 设计食物评分系统
      • 3/1 131. 分割回文串
      • 3/2 132. 分割回文串 II


2/24 1656. 设计有序流

数组保存数据 插入数据后
检查指针节点是否可以往后移动

class OrderedStream(object):def __init__(self, n):""":type n: int"""self.n = nself.ptr = 0self.l = [""]*(n+1)def insert(self, idKey, value):""":type idKey: int:type value: str:rtype: List[str]"""ans = []self.l[idKey] = valuewhile self.ptr<self.n and self.l[self.ptr+1]!="":ans.append(self.l[self.ptr+1])self.ptr +=1if self.ptr>self.n:breakreturn ans

2/25 2502. 设计内存分配器

使用长度为n的数字 记录每个位置内存使用情况

class Allocator(object):def __init__(self, n):""":type n: int"""self.n=nself.mem=[0]*ndef allocate(self, size, mID):""":type size: int:type mID: int:rtype: int"""cnt = 0for i in range(self.n):if self.mem[i]>0:cnt=0else:cnt+=1if cnt==size:for j in range(i-cnt+1,i+1):self.mem[j]=mIDreturn i-cnt+1return -1def freeMemory(self, mID):""":type mID: int:rtype: int"""cnt = 0for i in range(self.n):if self.mem[i]==mID:cnt+=1self.mem[i]=0return cnt

2/26 1472. 设计浏览器历史记录

模拟 使用一个数组urls保存网页记录
cur指向当前访问的网页索引

class BrowserHistory(object):def __init__(self, homepage):""":type homepage: str"""self.urls = [homepage]self.cur = 0def visit(self, url):""":type url: str:rtype: None"""self.urls = self.urls[:self.cur+1]self.urls.append(url)self.cur+=1def back(self, steps):""":type steps: int:rtype: str"""self.cur = max(0,self.cur-steps)return self.urls[self.cur]def forward(self, steps):""":type steps: int:rtype: str"""self.cur = min(len(self.urls)-1,self.cur+steps)return self.urls[self.cur]

2/27 2296. 设计一个文本编辑器

使用left,right两个栈分别存储光标左右的内容
add:将text压入left中
delete:从left中取出k个直至为空
cursorleft:将left中取出放入right中
cursorright:将right中取出放入left中

class TextEditor(object):def __init__(self):self.left=[]self.right=[]def addText(self, text):""":type text: str:rtype: None"""self.left.extend(text)def deleteText(self, k):""":type k: int:rtype: int"""cnt=min(k,len(self.left))del self.left[-cnt:]return cntdef cursorLeft(self, k):""":type k: int:rtype: str"""for _ in range(min(k,len(self.left))):self.right.append(self.left.pop())return ''.join(self.left[-10:])def cursorRight(self, k):""":type k: int:rtype: str"""for _ in range(min(k,len(self.right))):self.left.append(self.right.pop())return ''.join(self.left[-10:])

2/28 2353. 设计食物评分系统

foodmap维护food对应的分数和烹饪方法
ratemap[cuisines] 使用最小堆维护同一烹饪方法中的分数 用负数变为最大堆

import heapq
class FoodRatings(object):def __init__(self, foods, cuisines, ratings):""":type foods: List[str]:type cuisines: List[str]:type ratings: List[int]"""self.food={}self.rate={}self.n=len(foods)for i in range(self.n):f = foods[i]c = cuisines[i]r = ratings[i]self.food[f]=(c,r)if c not in self.rate:self.rate[c]=[]heapq.heappush(self.rate[c], (-r,f))def changeRating(self, food, newRating):""":type food: str:type newRating: int:rtype: None"""c,r = self.food[food]heapq.heappush(self.rate[c], (-newRating,food))self.food[food]=(c,newRating)def highestRated(self, cuisine):""":type cuisine: str:rtype: str"""while self.rate[cuisine]:r,f = self.rate[cuisine][0]if -r == self.food[f][1]:return fheapq.heappop(self.rate[cuisine])return ""

3/1 131. 分割回文串

check检查字符串l是否回文
pdic存放pos开头所有回文的子串

def partition(s):""":type s: str:rtype: List[List[str]]"""def check(l):t = Trueif len(l)==0:return twhile t and len(l)>1:if l[0]==l[-1]:l.pop(0)l.pop(-1)else:t = Falseif len(l)>1:return Falseelse:return Trueret =[]if len(s)==0:return retl = list(s)    dic = {}for i in range(len(l)):begin = l[i]for j in range(len(l)-1,i-1,-1):if begin == l[j]:if check(l[i:j+1]):dic[(i,j)] = l[i:j+1]pdic = {}for i in dic:pos = i[0]tmp = pdic.get(pos,[])tmp.append(i)pdic[pos] = tmpdef combine(begin):ret = []va = pdic[begin]for v in va:end = v[1]if end == (len(s)-1):ret.append([v])else:l = combine(end+1)for t in l:t.insert(0,v)ret.extend(l)     return retr = combine(0)for v in r:tmp = []for i in v:tmp.append(''.join(dic[i]))ret.append(tmp)return ret

3/2 132. 分割回文串 II

m[i][j]true表示[i,j]为回文串
dp[i]记录0~i最少分割切几次


def minCut(s):""":type s: str:rtype: int"""n = len(s)##预处理 判断i,j是否为回文串m = [[True]*n for _ in range(n)] for i in range(n-1,-1,-1):for j in range(i+1,n):m[i][j] = (s[i]==s[j]) and m[i+1][j-1]dp = [float("inf")] * nfor i in range(n):if m[0][i]: ##如果0-i为回文串 不需要切割dp[i]=0else:for j in range(i):if m[j+1][i]:dp[i] = min(dp[i],dp[j]+1)return dp[n-1]

相关文章:

LeetCode 每日一题 2025/2/24-2025/3/2

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/24 1656. 设计有序流2/25 2502. 设计内存分配器2/26 1472. 设计浏览器历史记录2/27 2296. 设计一个文本编辑器2/28 2353. 设计食物评分系统3/1 131. 分割回文串3/2 132. …...

TeX Live 2025 最新版安装与中文环境配置全教程(Windows/Mac/Linux)

一、软件定位与特性 TeX Live 是由国际TeX用户组&#xff08;TUG&#xff09;维护的跨平台专业排版系统&#xff0c;支持LaTeX、XeLaTeX等多种排版引擎&#xff0c;广泛应用于学术论文、书籍出版等领域。2025版核心升级&#xff1a; 智能编译&#xff1a;自动检测编码错误并提…...

Android实现漂亮的波纹动画

Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果&#xff08;波纹大小变化、画笔透明度变化、画笔粗细变化&#xff09; 一、UI界面 界面主要分为三部分 第一部分&#xff1a;输入框&#xff0c;根据输入x轴、Y轴、Z轴倾…...

JAVA学习笔记038——bean的概念和常见注解标注

什么是bean? Bean 就是 被 Spring 管理的对象&#xff0c;就像工厂流水线上生产的“标准产品”。这些对象不是你自己 new 出来的&#xff0c;而是由 Spring 容器&#xff08;一个超级工厂&#xff09;帮你创建、组装、管理。 由 Component、Service、Controller 等注解标记的…...

自然语言处理NLP入门 -- 第十节NLP 实战项目 2: 简单的聊天机器人

一、为什么要做聊天机器人&#xff1f; 在互联网时代&#xff0c;我们日常接触到的“在线客服”“自动问答”等&#xff0c;大多是以聊天机器人的形式出现。它能帮我们快速回复常见问题&#xff0c;让用户获得及时的帮助&#xff0c;并在一定程度上减少人工客服的压力。 同时&…...

【网络安全 | 渗透工具】小程序反编译分析源码 | 图文教程

未经许可,禁止转载。 本文仅供学习使用,严禁用于非法渗透测试,笔者不承担任何责任。 文章目录 1、下载Proxifier2、下载反编译工具unveilr3、寻找小程序文件包4、对文件包进行反编译5、对源码进行分析6、渗透思路6.1、查找敏感信息泄露6.2、解析加解密逻辑6.3、枚举 API 接口…...

uniapp 系统学习,从入门到实战(六)—— 样式与布局

全篇大概 4700 字(含代码)&#xff0c;建议阅读时间 30min &#x1f4da; 目录 Flex 布局在 UniApp 中的应用响应式设计与适配多端使用 SCSS 提升样式开发效率实战案例演示总结 1. Flex 布局在 UniApp 中的应用 1.1 基础布局实现 通过 display: flex 快速构建弹性容器&#…...

‘ts-node‘ 不是内部或外部命令,也不是可运行的程序

新建一个test.ts文件 let message: string = Hello World; console.log(message);如果没有任何配置的前提下,会报错’ts-node’ 不是内部或外部命令,也不是可运行的程序。 此时需要安装一下ts-node。 npm install...

mysql 全方位安装教程

下载 MySQL 【官网下载地址】 注意要选择较大的哪个安装包&#xff0c;小的安装包是一个安装器。 我们不用登录&#xff0c;直接下载 直接运行下载好的安装包 MySQL如果是 安装包安装, 可以图形化界面自主配置 如果是压缩包解压, 可以配置 配置文件, 可以解压安装到指定的…...

22-接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法一&#xff1a;双指针法 思路 使用两个指针 left 和 right 分别指向数组的两端&#xff0c;同时记录左边的最大高度 leftMax 和右边的最大高度 rig…...

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成 在现代企业级应用开发中&#xff0c;处理多个数据源是一个常见的需求。本文将详细介绍如何使用Spring Boot结合达梦数据库&#xff08;DM&#xff09;&#xff0c;并通过MyBatis Plus来简化数据库操作&…...

leetcode28 找出字符串第一个匹配值的下标 KMP算法

KMP 算法——快速的从主串中找到模式串 当出现字符串不匹配时&#xff0c;可以知道一部分之前已经匹配的文本内容&#xff0c;可以利用这些信息避免从头再去做匹配了。 KMP 算法 比较指针不回溯&#xff0c;仅仅是后移模式串。 每次不匹配的时候&#xff0c;找之前已匹配部分…...

【Bug】natten:安装报错(临近注意力机制的高效cuda内核实现)

正常安装natten报错 pip install natten 报错 可以尝试使用以下网站进行安装 https://shi-labs.com/natten/ 可以根据自己的cuda与pytorch版本进行安装 之间复制命令即可&#xff0c;不需要进行任何修改...

AI 实战2 - face -detect

人脸检测 环境安装源设置conda 环境安装依赖库 概述数据集wider_face转yolo环境依赖标注信息格式转换图片处理生成 train.txt 文件 数据集展示数据集加载和处理 参考文章 环境 安装源设置 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/f…...

Spring Boot 项目开发流程全解析

目录 引言 一、开发环境准备 二、创建项目 三、项目结构 四、开发业务逻辑 1.创建实体类&#xff1a; 2.创建数据访问层&#xff08;DAO&#xff09;&#xff1a; 3.创建服务层&#xff08;Service&#xff09;&#xff1a; 4.创建控制器层&#xff08;Controller&…...

从Java到MySQL8源码:深入解析PreparedStatement参数绑定与执行机制

引言 在数据库开发中&#xff0c;PreparedStatement&#xff08;预处理语句&#xff09;是防止SQL注入、提升性能的重要工具。它通过分离SQL结构与参数值&#xff0c;不仅增强了安全性&#xff0c;还能利用预编译优化执行效率。本文将从Java JDBC驱动和MySQL 8源码的双重视角&…...

mysql的主从同步

1、异步复制&#xff1a;这是MySQL默认的复制模式。在这种模式下&#xff0c;主库在执行完客户端提交的事务后会立即将结果返回给客户端&#xff0c;并不关心从库是否已经接收并处理。这种模式的优点是实现简单&#xff0c;但缺点是如果主库崩溃&#xff0c;已经提交的事务可能…...

工程化与框架系列(10)--微前端架构

微前端架构 &#x1f3d7;️ 微前端是一种将前端应用分解成更小、更易管理的独立部分的架构模式。本文将详细介绍微前端的核心概念、实现方案和最佳实践。 微前端概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;微前端的核心理念是将前端应用分解成一系列独立部署、松耦…...

【3天快速入门WPF】11-附加属性

目录 1. 步骤1:定义附加属性2. 示例代码3. 步骤2:在XAML中使用附加属性3.1. 示例代码4. 步骤3:扩展使用场景4.1. 示例代码5. 总结上一篇讲到了依赖属性,本篇主要想说一下附加属性。 在WPF中,附加属性(Attached Property)是一种特殊的依赖属性,允许你在不属于某个类的控…...

MySQL并发知识(面试高频)

mysql并发事务解决 不同隔离级别下&#xff0c;mysql解决并发事务的方式不同。主要由锁机制和MVCC(多版本并发控制)机制来解决并发事务问题。 1. mysql中的锁有哪些&#xff1f; 表级锁&#xff1a; 场景&#xff1a;表级锁适用于需要对整个表进行操作的情况&#xff0c;例如…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...