【C++算法】40.模拟_N 字形变换

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

6. N 字形变换


题目描述:

b50e13ff3774fd755b1540aabc936bbd


解法

解法一:模拟

a,b,c,d,e,f,g......

n=4

弄个矩阵放进去,最后从左往右读取。

50134737e031222526cd48c683b80845

解法二:模拟优化-找规律

acb3c699e76ed4c42468cd37d87918a9

n=4的时候,06之间相差了6个元素:0,1,2,3,4,5

a2288ddd2f8cfd61ae6d96d32db13def

我们把元素移动位置,可以得到在输出的第一个元素后面那个元素,是距离第一个元素2n-2个元素的。得到公差d=2n-2

0行的规律就是:0->0+d->0+2d......->0+kd (kd<len)

n-1行的规律就是:n-1->n-1+d->n-1+2d......->n-1+kd (n-1+kd<len)

cc703d51119d4f7766b1860a2daa6281

这里的第1~n-2行都有两个元素是一组的。并且他们加起来刚好是公差。

1~n-2行的规律是:(k,d-k)->(k+d,2d-k)......->(k+(k-1)d,kd-k) (k+(k-1)d<len),(kd-k<len)

不过如果就这么结束,那就错啦。

n=1的时候,运用上面的规律就会死循环,所以我们要单独讨论n=1的情况,直接输出字符串。


C++ 算法代码:

class Solution 
{public:string convert(string s, int numRows){// 处理边界情况if(numRows == 1) return s;string ret;int d = 2 * numRows - 2, n = s.size();// 1. 先处理第一行for(int i = 0; i < n; i += d)ret += s[i];// 2. 处理中间行for(int k = 1; k < numRows - 1; k++) // 枚举每一行{for(int i = k, j = d - k; i < n || j < n; i += d, j += d){if(i < n) ret += s[i];if(j < n) ret += s[j];}}// 3. 处理最后一行for(int i = numRows - 1; i < n; i += d)ret += s[i];return ret;}
};

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

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

相关文章

访问者模式的理解和实践

在软件开发过程中&#xff0c;设计模式为我们提供了解决常见问题的最佳实践。访问者模式&#xff08;Visitor Pattern&#xff09;是行为设计模式之一&#xff0c;它将数据操作与数据结构分离&#xff0c;使得在不修改数据结构的前提下&#xff0c;能够定义作用于这些元素的新的…

Jenkins:持续集成与持续部署的利器

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是Jenkins 2、Jenkins的起源 二、Jenkins的核心…

配置ingress将service中的端口暴露出去

service是管理pod的暴露的,但是每个service都暴露一个端口到外部并不是很合适。使用ingress将不同的service暴露的端口通过子url的方式做反向代理,使用7层代理方式暴露给外部。 配置ingress-nginx需要先按照前面讲解的安装方式安装一下,然后就可以修改helm的values.yaml配置…

java中的数组(4)

大家好&#xff0c;今天是java数组的最后一篇&#xff0c;我来为大家介绍数组中一些常见用法&#xff0c;那么我们直接发车。 五.作为函数的返回值. 1数组对象在堆上,不会因为局部变量的销段而销毁. 2.new开辟新空间. 3.数组对象是在堆上的. 4.引用变量目前是在main函数里…

从SRE视角透视DevOps的构建精髓

SRE 侧重系统稳定性&#xff0c;DevOps 强调开发运维协作。SRE 实践助力DevOps&#xff0c;提升系统稳定性与团队协作效率。 SRE 运用软件工程的原理&#xff0c;将系统管理员的手工任务自动化&#xff0c;负责运维由系统组件构成的服务&#xff0c;确保服务稳定运行。SRE职责涵…

孚盟云 MailAjax.ashx SQL漏洞复现

0x01 产品描述: ‌孚盟云‌是由

关于Redis哨兵机制实验操作步骤

需要搭建帮助的可以去taobao搜索Easy Company技术服务&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 需要搭建帮助的可以去taobao搜索Easy Company技术服务&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 一、配置哨兵(sentinel) 创建三个哨兵配置文件&…

基于51单片机的智能门禁系统设计与实现

1. 项目背景与需求分析 随着社会的不断发展&#xff0c;智能化门禁系统在现代安全领域应用越来越广泛。智能门禁系统通过单片机的控制功能&#xff0c;结合指纹模块和液晶显示模块&#xff0c;能够实现便捷、高效、安全的身份认证管理。基于STC89C52单片机的设计&#xff0c;具…

【大前端vue:组件】vue鼠标滑动:平滑滚动效果 向左、向右

【大前端vue&#xff1a;组件】vue鼠标滑动&#xff1a;平滑滚动效果 向左、向右 <template><div class"tab-container"><div class"tab-wrapper"><h2 class"main-title">鼠标滑动&#xff1a;平滑滚动效果 向左、向右…

某养老产业公司管理诊断项目成功案例纪实

某养老产业公司管理诊断项目成功案例纪实 ——从短期和长期出发&#xff0c;提供转型改革建议 【客户行业】养老行业 【问题类型】问题诊断 【客户背景】 某养老产业公司是一家主要从事养老服务为主的企业&#xff0c;主营业务包括社区养老服务、居家养老、康复训练服务等…

什么叫中间件服务器?

什么叫中间件服务器&#xff1f;它在软件架构中扮演着怎样的角色&#xff1f;在现代应用程序开发中&#xff0c;中间件服务器的概念很多人对它并不太熟悉&#xff0c;但其实它的作用却不小。 中间件服务器是一种连接不同软件应用程序的中介。想象一下&#xff0c;在一个大型企…

牛客周赛71(字符串,状压dp)

目录 B. 宝石手串 D. 气球谜题 B. 宝石手串 &#xff08;1&#xff09;两种扩容方式&#xff1a; // 法一&#xff1a;直接加&#xff08;通常用于拼接字符串&#xff09;s s// 法二&#xff1a;一个一个字符加&#xff08;用于加单个字符&#xff09;for (…

Python的3D可视化库【vedo】1-4 (visual模块) 体素可视化、光照控制、Actor2D对象

文章目录 6. VolumeVisual6.1 关于体素6.2 显示效果6.2.1 遮蔽6.2.2 木纹或磨砂效果 6.3 颜色和透明度6.3.1 透明度衰减单位6.3.2 划分透明度标量梯度6.3.3 设置颜色或渐变6.3.4 标量的计算模式6.3.5 标量的插值方式 6.4 过滤6.4.1 按单元格id隐藏单元格6.4.2 按二进制矩阵设置…

DAY5 C++运算符重载

1.类实现> 、<、!、||、&#xff01;和后自增、前自减、后自减运算符的重载 代码&#xff1a; #include <iostream>using namespace std; class Complex {int rel;int vir; public:Complex(){};Complex(int rel,int vir):rel(rel),vir(vir){cout << "…

qt 封装 调用 dll

这个目录下 &#xff0c;第一个收藏的这个 &#xff0c;可以用&#xff0c; 但是有几个地方要注意 第一.需要将dll的头文件添加到qt的文件夹里面 第二&#xff0c;需要在pro文件里面添加动态库路径 第三&#xff0c;如果调用dll失败&#xff0c;那么大概需要将dll文件放在e…

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…

快速将请求头构建成json结构

1.背景 有时候我们要爬虫(组包)请求一个资源数据,需要构建与原始请求一样的请求头,从浏览器复制过来的请求头,有很多,如果一个一个的配置成json有点慢,那么如何快速构建呢? 今天就使用正则表达式的方式实现 正则表达式实现快速将请求头构建成json结构 将冒号后边的换行符去掉…

k8s调度策略

调度策略 binpack&#xff08;装箱策略&#xff09; Binpacking策略&#xff08;又称装箱问题&#xff09;是一种优化算法&#xff0c;用于将物品有效地放入容器&#xff08;或“箱子”&#xff09;中&#xff0c;使得所使用的容器数量最少&#xff0c;Kubernetes等集群管理系…

uniapp支持App横竖屏开发总结

一、需求&#xff1a; app要支持重力感应自动切换横竖屏&#xff0c;并切换后样式不能错乱 二、实现 官方文档 官方Git manifest.json文件中 "app-plus" : {"screenOrientation" : ["portrait-primary","portrait-secondary","…

Flink如何基于数据版本使用最新离线数据

业务场景 假设批量有一张商户表&#xff0c;表字段中有商户名称和商户分类两个字段。 批量需要将最新的商户名称和分类的映射关系推到hbase供实时使用。 原实现方案 a.原方案内容 为解决批量晚批问题&#xff0c;批量推送hbase表时一份数据产生两类rowkey&#xff1a;T-1和…