《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,并在其中编写你的守护脚本逻辑。确保这个脚…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
