蓝桥杯---N字形变换(leetcode第6题)题解

文章目录

  • 1.问题重述
  • 2.例子分析
  • 3.思路讲解
  • 4.代码分析

1.问题重述

这个题目可以是Z字形变换,也可以叫做N字形变换:

给定我们一串字符,我们需要把这串字符按照先往下写,再往右上方去写,再往下去写,再往右上方去写,这个书写的形状类似于字母N或者说是Z,我们最后再按照从第一行到最后一行的顺序读取一下即可;

给定的参数除了这个字符串,还有一个n,表示的就是我们的这个变换的深度,也就是我们的这个变换得到的这个结果的行数;

2.例子分析

其实这个过程很容易看明白,对于这个例子,我觉得也没有什么可以多说的,但是还是看一下这个官方给出来的两个案例:

  • 第一个例子是n=3,也就是每一次写三行之后,就要转弯,这个矩阵的行数就是3(矩阵是我们后面用来模拟这个过程的重要工具)

  • 第二个例子是n=4,也就是写四行之后就开始进行变换,我们这个时候构建的矩阵的行数就是4行;

  • 第三个例子就更加简单了,是n=1的这个情况,这个意味着什么,意味着我们的这个字符串原封不动,因为n=1说明只有一行,这样进行变换之后的结果和我们原来的这个字符串没有任何区别,希望大家理解;

3.思路讲解

我们上面说了,这个过程是借助矩阵进行说明情况的:

下面的这个是按照字母顺序abcdefg进行演示说明思路的:

n=4的时候,第一行的是0和6(下标),我们可以发现有什么规律?这个6表示的是什么,是不是前面的这个数据的个数,就是从a~f的这个过程里面的字符的个数;

这个个数在这个里面我们称之为公差:d,这个d的求解就和我们的n相关,d=2n-2,下面我画了一个图说明这个d和n之间的关系是如何推导出来的;

我们把这个e,f往左边去挪动,把这个e,f挪动到一列这个时候发现这个2n就是这个红色的两列:因为这个里面有两个空格(两个红叉在的地方),所以这个个数就是2n-2(其他的这个n的情况大家可以去测试,也是2n-2);

接下来,我们总结一下这个规律,如下图所示:

我们分为了第一行的输出顺序,最后一行的输出顺序和中间行的输出顺序;

第一行就是0 0+d 0+2d这样的等差数列的顺序,这个d就是我们上面使用2n-2求解出来的公差;

最后一行第一个元素下标是n-1 第二个元素9就是n-1的基础上面加上d,以此类推;

中间行元素比较复杂,比如第二行的第一个元素是1,第二个是5,两个的关系就是1+5=6,所以我们加上第一列的元素就是k,则这一行的第二个元素就是d-k,然后分别以这两个数字作为基础,1+d=7,1+2d=13,然后是以5作为基础,5+d=11然后依次类推;

4.代码分析

第三行是特殊情况:d=2n-2,因此当这个n==1的时候,也就是这个数组元素原封不动,return就是这个给定的参数:字符串s;

ret是用来存储我们的最后的这个返回的结果的;

第12,17,26行的for循环,分别对应着我们的第一行的读取,中间行的读取,最后一行的读取方法;

第12行:i=0进行循环的时候,条件是i+=d,也就是每一步跳过的元素的个数就是我们的公差;

第26行:n-1是起始元素,也就是这个第一列的最后一个元素,他每一次跳过的元素就是d个;

第17行:k=1表示的从第二行开始的,k<n-1表示的循环终止条件是到达的倒数第二行结束,内层的这个for循环,实际上就是我们的k d-k k+d d-k+d这样的过程的表述,因为这个i,j都可能会越界,所以这个里面有if进行判断,如果没有越界,这个时候就把元素添加到我们的ret里面去;

777

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16210.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第六篇:数字逻辑的“矩阵革命”——域控制器中的组合电路设计

副标题 &#xff1a;用卡诺图破解车身域控制器的逻辑迷宫&#xff0c;揭秘华为DriveONE的“数字特工” ▍ 开篇&#xff1a;黑客帝国世界观映射 > "Welcome to the Real World." —— Morpheus > 在数字逻辑的世界里&#xff0c;组合电路就是构建Matr…

Linux(Ubuntu)安装pyenv和pyenv-virtualenv

Ubuntu安装pyenv和pyenv-virtualenv 安装 pyenv1. 下载 pyenv2. 配置环境变量3. 重启 Shell4. 安装依赖5.检测是否安装成功 安装 pyenv-virtualenv1. 安装 pyenv-virtualenv2. 配置环境变量3. 重启 Shell pyenv 的使用1. 查看可安装的 Python 版本2. 安装指定版本的 Python3. 查…

LVS集群

特性NAT 模式DR 模式工作原理Director 修改请求/响应的 IP 地址和端口&#xff0c;流量双向经过 DirectorDirector 仅修改请求的 MAC 地址&#xff0c;响应由 Real Server 直接返回客户端性能较低&#xff08;需处理双向流量&#xff0c;易成瓶颈&#xff09;高&#xff08;仅处…

远程桌面连接提示被锁 更改帐户锁定策略

解锁&#xff1a; 从 hyper-v管理器进入 vm cmd 进入 gpedit.msc 计算机配置 -> Windows 设置 -> 安全设置 -> 帐户策略 -> 帐户锁定策略 可以把 允许管理员帐户锁定 禁用&#xff0c;也可以把 帐户锁定阈值 调大一点&#xff08;如果还会锁定 时间查看器 ->…

docker.service job docker.service/start failed with result ‘dependency‘

Bug:docker.service job docker.service/start failed with result ‘dependency’ 运行以下命令&#xff1a; sudo systemctl start docker.service出现错误&#xff1a; docker.service job docker.service/start failed with result dependency解决办法&#xff1a; 给系…

前端实现在PDF上添加标注(1)

前段时间接到一个需求&#xff0c;用户希望网页上预览PDF&#xff0c;同时能在PDF上添加文字&#xff0c;划线&#xff0c;箭头和用矩形框选的标注&#xff0c;另外还需要对已有的标注进行修改&#xff0c;删除。 期初在互联网上一通搜索&#xff0c;对这个需求来讲发现了两个问…

《optee系统架构从入门到精通》

CSDN学院课程连接&#xff1a;https://edu.csdn.net/course/detail/39573 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验&#xff0c;擅长 Trustzone/TEE/ 安全的设计与开发&#xff0c;对 ARM 架构的安全领域有着深入的研究和丰富的实践经验&#xff0c;能够将…

jupyter notebook中3种读图片的方法_与_图片翻转(上下翻转,左右翻转,上下左右翻转)

已有图片cat.jpg 相对于代码的位置&#xff0c;可以用./cat.jpg进行读取。 下面是3种读图片的方法。 1.python读图片-pillow 图片文件不适合用open去读取 用open读图片&#xff0c;易引发UnicodeDecodeError: gbk codec cant decode byte 0xff in position 0: illegal multib…

文理医院预约挂号系统的设计与实现(代码+数据库+LW)

摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定文理医院预约挂号系统的总体功能模块。然后&#…

从MySQL优化到脑力健康:技术人与效率的双重提升

文章目录 零&#xff1a;前言一&#xff1a;MySQL性能优化的核心知识点1. 索引优化的最佳实践实战案例&#xff1a; 2. 高并发事务的处理机制实战案例&#xff1a; 3. 查询性能调优实战案例&#xff1a; 4. 缓存与连接池的优化实战案例&#xff1a; 二&#xff1a;技术工作者的…

本地部署DeepSeek R1 + 界面可视化open-webui

本地部署DeepSeek R1 界面可视化open-webui ollama是物理机本地安装 open-webui是容器启动 另外&#xff0c;用docker 部署ollama也很方便ollama docker 安裝部署ollama ollama官网 安装 Linux上安装: curl -fsSL https://ollama.com/install.sh | sh使用命令行管理 拉…

Oracle常用导元数据方法

1 说明 前两天领导发邮件要求导出O库一批表和索引的ddl语句做国产化测试&#xff0c;涉及6个系统&#xff0c;6千多张表&#xff0c;还好涉及的用户并不多&#xff0c;要不然很麻烦。 如此大费周折原因&#xff0c;是某国产库无法做元数据迁移。。。额&#xff0c;只能我手动导…

win32汇编环境,对线程的创建与操作示例二

;运行效果 ;win32汇编环境,对线程的创建与操作示例二 ;本文主要是实现用CreateThread创建线程时,如何把参数传入进去 ;以下举3个例子说明,如何把数值、字符串和自定义结构传入线程之中 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>…

【Obsidian】当笔记接入AI,Copilot插件推荐

当笔记接入AI&#xff0c;Copilot插件推荐 自己的知识库笔记如果增加AI功能会怎样&#xff1f;AI的回答完全基于你自己的知识库余料&#xff0c;是不是很有趣。在插件库中有Copilot插件这款插件&#xff0c;可以实现这个梦想。 一、什么是Copilot&#xff1f; 我们知道githu…

【DeepSeek】deepseek可视化部署

目录 1 -> 前文 2 -> 部署可视化界面 1 -> 前文 【DeepSeek】DeepSeek概述 | 本地部署deepseek 通过前文可以将deepseek部署到本地使用&#xff0c;可是每次都需要winR输入cmd调出命令行进入到命令模式&#xff0c;输入命令ollama run deepseek-r1:latest。体验很…

html为<td>添加标注文本

样式说明&#xff1a; /*为td添加相对定位点*/ .td_text {position: relative; }/*为p添加绝对坐标(相对于父元素中的定位点)*/ .td_text p {position: absolute;top: 80%;font-size: 8px; }参考资料&#xff1a;

操作系统常见调度算法的详细介绍

目录 1. 先进先出算法&#xff08;FIFO&#xff09; 2. 前后台调度算法 3. 最短处理机运行期优先调度算法&#xff08;短进程优先算法&#xff09; 4. 最高响应比优先调度算法&#xff08;HRRN&#xff09; 5. 优先级调度算法 6. 时间片轮转调度算法 7. 多级反馈队列轮转…

(定时器,绘制事件,qt简单服务器的搭建)2025.2.11

作业 笔记&#xff08;复习补充&#xff09; 1> 制作一个闹钟软件 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QTimer> //定时器类 #include <QTime> //…

评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法

评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…

5-R循环

R 循环 ​ 有的时候&#xff0c;我们可能需要多次执行同一块代码。一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。 循环语句允许我们多…