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

leetcode 6 Z字形变化

一、题目描述

二、解题思路

解法一

构造二维向量,模拟Z字填写。实例填写后的二维向量如图所示:

解法二

整体思路

根据解法一模拟过程,寻找下标规律

具体思路

例如,当numRows=4时,通过观察每一行下标之间的关系我们可以知道:

(1)第0行第numRows行后一个下标与前一个下标的差为2*numRows-2,设这个值为d(公差)

下标规律为:

k,k+d,k+2d,k+3d......

(2)中间第k行可以两个组成一组,其下标规律为:

(k,d-k),(k+d,(d-k)+d),(k+2d,(d-k)+2d)......

三、代码实现

解法一

时间复杂度:T(n)=O(m*n)

空间复杂度:S(n)=O(m*n)

class Solution {
public:string convert(string s, int numRows) {//边界处理if(numRows==1||s.size()<=numRows) return s;//申请二维向量,模拟Z字填写vector<vector<char>> z_board(numRows,vector<char>(s.size(),'0'));//填写二维向量int num=0,row=0,line=0;while(num!=s.size()){//向下填写while(row<numRows&&num!=s.size()){z_board[row][line]=s[num];num++;row++;}row-=2;line++;//向右上填写while(row>0&&num!=s.size()){z_board[row][line]=s[num];num++;row--;line++;}}//构造需要返回的字符串string ret;for(int i=0;i!=numRows;i++)for(int j=0;j!=s.size();j++)if(z_board[i][j]!='0')ret+=z_board[i][j];return ret;}
};

解法二

时间复杂度:T(n)=O(n)

空间复杂度:S(n)=O(1)

class Solution {
public:string convert(string s, int numRows) {//根据模拟填写,观察下标规律//边界处理if(numRows==1||s.size()<=numRows) return s;//计算公差dint d=2*numRows-2;string ret;for(int row=0;row!=numRows;row++){//如果为第0行或者第numRows-1行if(row==0||row==numRows-1)for(int left=row;left<s.size();left+=d)ret+=s[left];//如果为中间第k行else {for(int left=row,right=d-row;left<s.size()||right<s.size();left+=d,right+=d){if(left<s.size())ret+=s[left];if(right<s.size())ret+=s[right];} }}return ret;}
};

http://www.xdnf.cn/news/20334.html

相关文章:

  • 基于YOLOv8的车辆轨迹识别与目标检测研究分析软件源代码+详细文档
  • 整理了几道前端面试题
  • 字符串格式化——`vsnprintf`函数
  • 图像处理:实现多图点重叠效果
  • More Effective C++ 条款29:引用计数
  • 【完整源码+数据集+部署教程】骰子点数识别图像实例分割系统源码和数据集:改进yolo11-DCNV2
  • 【知识点讲解】模型扩展法则(Scaling Law)与计算最优模型全面解析:从入门到前沿
  • 深入了解synchronized
  • 2025世界职校技能大赛总决赛争夺赛汽车制造与维修赛道比赛资讯
  • 告别Qt Slider!用纯C++打造更轻量的TpSlider组件
  • 一文了解太阳光模拟器的汽车材料老化测试及标准解析
  • 企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
  • 集成学习 | MATLAB基于CNN-LSTM-Adaboost多输入单输出回归预测
  • 调试技巧:Chrome DevTools 与 Node.js Inspector
  • 从零开始学大模型之大模型训练流程实践
  • Multisim14.0(五)仿真设计
  • OpenResty 和 Nginx 到底有啥区别?你真的了解吗!
  • 分布式3PC理论
  • Qt---字节数据处理QByteArray
  • 【FastDDS】Layer Transport ( 02-Transport API )
  • k8s基础练习环境搭建
  • 服务器硬盘“Unconfigured Bad“状态解决方案
  • WebSocket:实现实时通信的革命性技术
  • Iwip驱动8211FS项目——MPSOC实战1
  • 当服务器出现网卡故障时如何检测网卡硬件故障并解决?
  • Grizzly_高性能 Java 网络应用框架深度解析
  • 基于智能合约实现非托管支付
  • Qt添加图标资源
  • conda配置pytorch虚拟环境
  • git cherry-pick 用法