《LeetCode Hot100》 Day01
Day01
-
轮转数组

思路:
(1) 使用O(1) 空间复杂度解决,就需要原地解决,不能创建新的数组。
(2) 先整体反转数组,再反转前k个数,再反转剩下的数。即可完整本题。
(3) 所以需要定义一个方法实现反转这个功能,该方法接受三个参数:数组,起始索引,终止索引。
完整代码如下:
class Solution {
public void rotate(int[] nums, int k) {
• int n = nums.length;
• k %= n; // 轮转 k 次等于轮转 k%n 次
• reverse(nums, 0, n - 1);
• reverse(nums, 0, k - 1);
• reverse(nums, k, n - 1);
}
private void reverse(int[] nums, int i, int j) {
• while (i < j) {
• int temp = nums[i];
• nums[i++] = nums[j];
• nums[j--] = temp;
• }
}
}
-
在排序数组中查找元素的第一个和最后一个位置

思路:
(1) 从前往后依次遍历,找到目标值在数组中第一次出现的位置,终止此次循环。
(2) 从后往前遍历,找到目标值在数组中最后一次出现的位置,终止此次循环。
代码:
class Solution {
• public int[] searchRange(int[] nums, int target) {
• int start = -1;
• int end = -1;
• int length = nums.length;
• // 查找开始位置
• for (int i = 0; i < length; i++) {
• if (nums[i] == target) {
• start = i;
• break; // 找到第一个位置后可以结束
• }
• }
• // 查找结束位置
• for (int i = length - 1; i >= 0; i--) {
• if (nums[i] == target) {
• end = i;
• break; // 找到最后一个位置后可以结束
• }
• }
• return new int[] {start, end};
• }
}
-
字符串解码

思路:
(1) 从前往后遍历字符串,如果当前字符是字母,则直接添加到res字符串中。
(2) 如果当前字符是'[',则将当前res存储到特定栈中,并将multi也存储到对应的特定栈中。并重置res和multi。
(3) 如果当前字符是']',则将栈中的res和multi都取出来,其中res重复multi次,添加到一个temp字符串中。
(4) 如果当前字符是数字,则将multi的值*10再加上当前的数字,乘以10的目的是为了当数字为多位数时,确保正确拼接为一个正确的数字。
代码:
class Solution {
public String decodeString(String s) {
• StringBuilder res = new StringBuilder(); // 存储当前解码的结果
• int multi = 0; // 当前重复次数
• LinkedList<Integer> stack_multi = new LinkedList<>(); // 存储之前的重复次数
• LinkedList<String> stack_res = new LinkedList<>(); // 存储之前的解码结果
• // 遍历每个字符
• for(Character c : s.toCharArray()) {
• if(c == '[') {
• // 遇到 '[' 时,先保存当前的重复次数和解码结果
• stack_multi.addLast(multi); // 保存当前的重复次数
• stack_res.addLast(res.toString()); // 保存当前解码结果
• multi = 0; // 重置重复次数
• res = new StringBuilder(); // 重置解码结果
• }
• else if(c == ']') {
• // 遇到 ']' 时,进行解码操作
• StringBuilder temp = new StringBuilder();
• int cur_multi = stack_multi.removeLast(); // 获取并移除之前保存的重复次数
• for(int i = 0; i < cur_multi; i++) {
• temp.append(res); // 将当前结果重复指定次数
• }
• res = new StringBuilder(stack_res.removeLast() + temp); // 拼接之前的解码结果和重复部分
• }
• else if(c >= '0' && c <= '9') {
• // 如果是数字,将其转换为数字并更新重复次数
• multi = multi * 10 + Integer.parseInt(c + "");
• }
• else {
• // 如果是字母,直接添加到当前的解码结果中
• res.append(c);
• }
• }
• return res.toString(); // 返回最终解码的字符串
}
}相关文章:
《LeetCode Hot100》 Day01
Day01 轮转数组 思路: (1) 使用O(1) 空间复杂度解决,就需要原地解决,不能创建新的数组。 (2) 先整体反转数组,再反转前k个数,再反转剩下的数。即可完整本题。 &…...
vue动态table 动态表头数据+动态列表数据
效果图: <template><div style"padding: 20px"><el-scrollbar><div class"scrollbar-flex-content"><div class"opt-search"><div style"width: 100px"> </div><div class"opt-b…...
1.3 GPT vs BERT 终极选择指南:从架构差异到企业级落地策略
GPT vs BERT 终极选择指南:从架构差异到企业级落地策略 引言:两大巨头的分道扬镳 2018年,BERT和GPT系列同时引爆NLP领域,却在架构选择上走向截然不同的道路: BERT采用双向Transformer Encoder,在11项NLP…...
python-leetcode 23.回文链表
题目: 给定单链表的头节点head,判断该链表是否为回文链表,如果是,返回True,否则,返回False 输入:head[1,2,2,1] 输出:true 方法一:将值复制到数组中后用双指针法 有两种常用的列表实现&#…...
食品饮料生产瓶颈?富唯智能协作机器人来 “破壁”
在食品和饮料行业的发展进程中,诸多生产瓶颈如重复性劳动负担、复杂环境作业难题、季节性产能波动等,长期制约着企业的高效运营与进一步发展。如今,富唯智能协作机器人的出现,为这些难题提供了完美的解决方案,正逐步改…...
Golang GORM系列:GORM CRUM操作实战
在数据库管理中,CRUD操作是应用程序的主干,支持数据的创建、检索、更新和删除。强大的Go对象关系映射库GORM通过抽象SQL语句的复杂性,使这些操作变得轻而易举。本文是掌握使用GORM进行CRUD操作的全面指南,提供了在Go应用程序中有效…...
C++ labmbd表达式
文章目录 C++ Lambda 表达式详解1. Lambda 表达式的组成部分:2. Lambda 语法示例(1) 最简单的 Lambda(2) 带参数的 Lambda(3) 指定返回类型的 Lambda3. 捕获外部变量(1) 值捕获(复制)(2) 引用捕获(3) 捕获所有变量4. Lambda 在 STL 中的应用5. Lambda 作为 `std::function`6…...
《大规模动画优化(一):GPU 顶点动画的生成》
GPU 顶点动画(Vertex Animation Texture, VAT) GPU 顶点动画(Vertex Animation Texture, VAT)烘焙的核心思想是: 在 CPU 端预先计算动画顶点数据,并存储到纹理(Texture2D)中…...
【前端】几种常见的跨域解决方案
在前端开发中,跨域问题是常见的挑战。以下是几种常见的跨域解决方案: 1. Nginx反向代理 使用 Nginx 进行反向代理是解决跨域问题的一种常见方式。Nginx 会充当一个中间代理服务器,接收来自前端的请求并将其转发到实际的后端 API 服务&#…...
如何在WinForms应用程序中读取和写入App.config文件
如何在WinForms应用程序中读取和写入App.config文件 1. 添加App.config文件2. 配置App.config3. 读取App.config4. 写入App.config 在WinForms应用程序中, App.config文件是用于存储配置数据的标准方式。通过使用.NET框架提供的类库,我们可以方便地对 …...
【分布式理论7】分布式调用之:服务间的(RPC)远程调用
文章目录 一、RPC 调用过程二、RPC 动态代理:屏蔽远程通讯细节1. 动态代理示例2. 如何将动态代理应用于 RPC 三、RPC序列化与协议编码1. RPC 序列化2. RPC 协议编码2.1. 协议编码的作用2.2. RPC 协议消息组成 四、RPC 网络传输1. 网络传输流程2. 关键优化点 一、RPC…...
人工智能应用-智能驾驶精确的目标检测和更高级的路径规划
实现更精确的目标检测和更高级的路径规划策略是自动驾驶领域的核心任务。以下是一个简化的示例,展示如何使用Python和常见的AI库(如TensorFlow、OpenCV和A*算法)来实现这些功能。 1. 环境准备 首先,确保安装了以下库:…...
dynamic_cast和static_cast和const_cast
dynamic_cast 在 C 中的作用 dynamic_cast 是 C 运行时类型转换(RTTI, Run-Time Type Identification)的一部分,主要用于: 安全的多态类型转换检查类型的有效性向下转换(Downcasting)跨类层次的指针或引用…...
DEEPSEEK与GPT等AI技术在机床数据采集与数字化转型中的应用与影响
随着人工智能(AI)技术的迅猛发展,深度学习、自然语言处理等先进技术开始广泛应用于各行各业。在制造业尤其是机床行业,AI技术的融合带来了巨大的变革,尤其在机床数据采集与机床数字化方面的应用。本文将探讨DEEPSEEK、…...
高速存储文章目录
《zynq tcp万兆网和ftp协议分析-CSDN博客》 《国产fpga nvme ip高速存储方案设计_fpga 高速存储-CSDN博客》 《国微pcie switch 8748高速存储方案设计_国产pcie switch-CSDN博客》 《FPGA SATA高速存储设计-CSDN博客》 《FPGA NVME高速存储设计_690t fpga-CSDN博客》 《zy…...
车载测试工具 --- CANoe VH6501 进行Not Acknowledge (NAck) 测试
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面
【清晰教程】本地部署DeepSeek-r1模型-CSDN博客 目录 安装Docker 配置&检查 Open WebUI 部署Open WebUI 安装Docker 完成本地DeepSeek-r1的部署后【清晰教程】本地部署DeepSeek-r1模型-CSDN博客,通过Docker为本地DeepSeek-r1部署WebUI界面。 访问Docker官…...
Linux运维——用户管理
Linux用户管理 一、Linux用户管理要点二、常用命令2.1、groupadd2.2、groupdel2.3、groupmod2.4、groups2.5、useradd2.6、userdel2.7、passwd2.9、su2.10、sudo2.10.1、给普通用户授权 sudo2.10.2、 免密码授权 sudo 一、Linux用户管理要点 创建用户组 - 使用 groupadd删除用…...
mac下dify+deepseek部署,实现私人知识库
目前deepseek 十分火爆,本地部署实现私有知识库,帮助自己日常工作,上一篇使用工具cherry studio可以做到私人知识库。今天学习了一下,使用Dify链接deepseek,实现私人知识库,也非常不错,这里分享…...
Linux中设置开机运行指令
系统:Debian 12 使用systemd来设置开机自启动脚本或命令是一个更加现代且推荐的方法。下面是具体的步骤: 创建守护脚本 首先,你需要创建一个Shell脚本文件,比如mydaemon.sh,并在其中编写你的守护脚本逻辑。确保这个脚…...
基于Python的可穿戴设备的人机交互设计与实现
前言随着科技的进步发展,人们对生活水平提高有了一定的要求,穿戴设备得到了一定的普及与发展,人与设备之间交互的快捷性和智能化成为了提高用户体验感的关键所在。 对穿戴设备与人之间的交互的需求进行调查,分析用户在使用过程中存…...
实战演练:基于快马与豆包开放平台,快速开发智能邮件处理助手
今天想和大家分享一个实战项目:基于豆包开放平台的智能邮件助手开发过程。这个工具特别适合需要频繁处理邮件的职场人士,能自动完成邮件摘要、待办事项提取、回复草拟等重复性工作。 项目背景与需求分析 日常工作中,我们经常要处理大量邮件。…...
Rust实战:通过DLL注入与IAT Hook技术拦截Windows API调用
1. 为什么需要Hook Windows API? 在Windows系统开发中,Hook技术就像给系统功能安装了一个"监听器"。想象一下,当你点击某个按钮时,原本应该弹出标准对话框,但通过Hook技术,我们可以在这个动作发生…...
Simulink SVPWM模块输出对不上?别慌,可能是这两个参数没设对(附24V电机FOC仿真案例)
Simulink SVPWM模块输出差异排查指南:从参数配置到波形修正 引言 在电机控制系统的仿真与开发过程中,Simulink的SVPWM模块是工程师们常用的工具之一。然而,许多开发者在对比自带模块与自建模型输出时,经常会遇到令人困惑的波形不一…...
Go语言中的文件操作:从os到ioutil
Go语言中的文件操作:从os到ioutil 1. 文件操作的基本概念 文件操作是编程中常见的任务,包括创建、读取、写入、删除文件,以及操作目录等。在Go语言中,文件操作主要通过 os、io、ioutil 和 io/fs 等包来实现。 Go语言的文件操作设计…...
Graphormer效果对比评测:vs GCN、GAT、GIN在分子回归任务上的表现
Graphormer效果对比评测:vs GCN、GAT、GIN在分子回归任务上的表现 1. 引言 在药物发现和材料科学领域,准确预测分子属性是一个关键挑战。传统方法依赖昂贵的实验或复杂的量子化学计算,而图神经网络(GNN)提供了一种更高效的替代方案。本文将…...
UI-TARS-desktop快速上手:10分钟完成Qwen3-4B多模态Agent桌面版部署与任务验证
UI-TARS-desktop快速上手:10分钟完成Qwen3-4B多模态Agent桌面版部署与任务验证 想体验一个能看懂屏幕、操作软件、帮你完成任务的AI助手吗?今天要介绍的UI-TARS-desktop,就是一个内置了强大视觉理解能力的多模态AI Agent桌面应用。它基于Qwe…...
不止于配置:用Horizon UAG 21.11打造安全外网访问,别忘了这些加固设置
超越基础配置:Horizon UAG 21.11安全加固全指南 在虚拟桌面架构中,统一接入网关(UAG)作为内外网流量的安全屏障,其配置合理性直接影响整体架构的安全性。许多管理员在完成UAG基础部署后,往往忽略了更深层次…...
PADS VX2.7实战指南:Router高效布线与等长设计技巧
1. PADS Router高效布线基础技巧 刚接触PADS Router时,最让我头疼的就是布线效率问题。后来发现,合理设置软件参数和掌握快捷键能极大提升工作效率。在PADS VX2.7中,Router工具的布线功能比Layout更加强大,特别适合处理复杂的高速…...
FLAC3D蠕变三轴压缩试验:博格斯摩尔本构应变时间曲线
FLAC3D蠕变三轴压缩试验:博格斯摩尔本构,应变时间曲线在岩土工程数值模拟里,蠕变试验就像给材料做"慢动作回放"。今天咱们拿FLAC3D折腾个博格斯摩尔(Burgers-Malvern)模型的蠕变三轴压缩试验,重点…...
