java数据结构与算法刷题-----LeetCode6:Z 字形变换

Keil MDK安装NRF52832开发环境全攻略(附系统时间错误解决方案) 本文详细介绍了如何使用Keil MDK搭建NRF52832开发环境,包括基础软件安装、项目配置关键步骤以及常见问题解决方案。特别针对系统时间错误导致的编译失败问题提供了实用解决方法,帮助开发者快速上手NRF52832开发。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析
  1. N的构造是有规律的,通过下标直接做文章即可,也可以使用二维数组配合压缩矩阵来模拟。具体看代码注释。
  1. 代码
    在这里插入图片描述
class Solution {
    /** 时间复杂度O(n),空间复杂度O(1)
        第一行和最后一行,每个字母下标依次间隔 (numRows-2)*2+2
        中间的行,设置为i,每个字母下标间隔为num = ((numRows-i)-2)*2 + 2 和 (numRows-2)*2+2 - num
        中间的行每两个加起来 =  (numRows-2)*2+2
     */
    public String convert(String s, int numRows) {
        int len = s.length();//字符串下标上限
        if(numRows <=1 || len<=numRows) return s;
        int num = 0;//num 是每次 间隔的下标数量
        StringBuilder str = new StringBuilder();
        for(int i = 0;i<numRows;i++){//一共几行就遍历几次
            str.append(s.charAt(i));//先放开头
            //然后依次放后面的,第一行和最后一行,每次间隔都是(numRows-2)*2+2,而中间的行每次间隔不一样
            if(i == 0 || i==numRows-1) num = (numRows-2)*2+2;
            else num = ((numRows-i)-2)*2 + 2; 
            int index = i;
            while(true){
                index = index + num;//下标自增
                if(index >= len) break;
                str.append(s.charAt(index));
                if(i != 0 && i!=numRows-1) num = ((numRows-2)*2+2 - num);//中间的行每次间隔不一样
            }
        }
        return str.toString();
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战 摘要: 本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理,通过滑模观测器估算反电动势,结合PLL抑制抖振;2)系统架构,替代编码器信号;3)Simulink建模流程,涵盖Clarke变换、SMO离散化实现、PLL设计等关键步骤;4)参数整定指南和工程实践要点,如启动策略和故障处理。该方法具有成本低、可靠性高的优势,适用于家电、电动车等场景,仿真结果显示角度误差±5°,速度动态跟随良好。文章还提供了调试建议和常见问题解决方案。 阅读详情

相关推荐

WPS和Excel通用!省市区四级联动下拉菜单保姆级教程(附最新行政区划数据包)

本文详细介绍了在WPS和Excel中实现省市区四级联动下拉菜单的完整教程,包含2024年最新行政区划数据的获取与整理方法。通过名称管理器和INDIRECT函数的组合,以及WPS的特色功能,帮助用户高效准确地录入四级行政区划信息,提升数据录入效率并减少错误。

s1t2u3的博客 611

java数据结构与算法刷题-----LeetCode21:合并两个有序链表

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846 思路分析 现在有两个链表,我们要将其合并为一个 最好不要改变原有链表,也就是最终合并结果,使用新的链表来保存 可以采用双指针的思路,而链表本身就是一个指针(指向自己并且保存自己的下一个元素) 所以,我们对比两个指针的值,小的就插入到新链表中...

殷志鹏的博客 1234

第3章 zynq MII转GMII的配置和EMIO UART0的配置

本文介绍了在Vivado工程中实现MII转GMII接口适配的过程,同时配置EMIO UART0接口。主要内容包括:修改PS IP核添加UART0接口,使用concat IP核进行信号整合,调整GMII信号引脚连接,添加约束文件定义引脚映射,并最终生成bit流文件。通过详细的操作截图和TCL约束代码,展示了从硬件配置到生成可编程文件的完整流程,为Zynq平台开发提供了实用参考。

qq_36517072的博客 903

删除重复的电子邮箱

1、问题描述 编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。 2、 创建表格 代码 create table if not exists Person(Id varchar(8), Email varchar(255)); delete * from Person where 1=1; // truncate table Person; insert into Person (Id, Email) values( '1', 'john@ex

qq_45793102的博客 236

无痛安装及初始配置 PHP 8.0.3 + Apache 2.4 + MySQL 8.0

PHP 8.0.3 + Apache 2.4 + MySQL 8.0MySQL 8.0.23 安装下载安装配置环境变量初始化MySQLPHP8.0.3 安装下载安装配置环境变量Apache 2.4 安装下载安装启动 MySQL 8.0.23 安装 下载 到官方网站下载:https://dev.mysql.com/downloads/mysql/ 目前的最新版本是MySQL 8.0.23 在Windows上有两种安装方式,一个是zip压缩文件解压然后配置,另一个是图像化界面安装。 这里选择第一种方法安装:

Kuang Da's Blog 6208

PromptBio实战:如何用AI对话搞定转录组数据分析(附详细操作截图)

本文详细介绍了如何利用PromptBio平台通过AI对话完成转录组数据分析,无需编程基础即可实现从数据上传到结果解读的全流程。文章包含详细的操作截图和参数配置建议,帮助科研人员快速掌握这一生信分析工具,显著提升研究效率。

weixin_30872157的博客 137

Java求回文数的两种巧妙方法---LeetCode9 回文数

Java求回文数两种巧妙方法详解

Forever_xxx的博客 1454

小众但实用:Python爬取钉钉/企业微信消息,实现办公数据自动化采集(完整版)

钉钉/企业微信的办公数据自动化采集,属于「小众但极度实用」的Python技巧——它不像爬虫爬取电商/网页数据那样被广泛关注,但能直接解决职场人的「刚需痛点」,把每天1-2小时的手动数据整理工作,变成「一键自动化完成」。这套技巧的核心价值,不在于「技术有多高深」,而在于「能真正落地、能真正提升效率」—— 几行简单的Python代码,就能解放双手,让你从繁琐的重复工作中解脱出来,专注于更有价值的核心工作。更重要的是:所有的技术和代码,都是基于「合规合法」的前提,守住了技术的底线,也守住了职场的原则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1931

牛客Top200---最长回文字符串(java)

题目 题解:中心扩展法 描述:遍历,从左到右遍历,然后向两端扩展 假设每个字符都是回文串最中心的字符,从中心字符向两边扩展,若左右字符不同则他就不会是回文串。 回文字符串需要分情况考虑,分奇偶两种情况,为奇数是i==i,然后向两边扩展,当为偶数时,先判断 i ==i+1 字符是否一样,一样则向两边扩展,否则他就不可能是回文串。 最后回文长度就是right - left -1,这个可以举两个例子 import java.util.*; public class Solution { publi

小样yx的博客 1961

【unity小技巧】新输入系统InputSystem游戏运行中改键重新绑定控制按键(最全最完美解决方案)

在游戏开发中,控制输入是至关重要的一环。Unity的新输入系统(Input System)为开发者提供了强大的工具来管理和处理用户输入,不仅支持各种平台上的多种输入设备,还能轻松处理复杂的输入操作和映射。本文将深入探讨如何使用Unity的新输入系统重新绑定控制按键,为开发者提供一套全面且完善的解决方案。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7359

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2623

java实现回文数算法

注意:上述代码假设输入的num是非负整数。如果输入的num是负数,则需要先将其转化为非负整数再进行比较。也可以将负数直接判断为非回文数。

小筱在线博客 608

完整功能-《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器(直接能运行cpp的MFC代码+实验报告)

《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器。(直接能跑的MFC)监听所有数据包,以及监听指定IP地址的数据包;(2)能够显示完整的IP数据包首部信息,例如:版本、首部长度、数据包长度、数据包类型(协议字段)、TTL、源IP地址、目的IP地址等;(3)能够显示完整的TCP报文段信息,例如:源端口、目的端口、序号、确认号、数据部分等;(4)能够自动检测SQL注入攻击等Web攻击行为;(5)能够将监听到的数据包信息保存到文件中,以及从文件中读取并显示数据包信息;(6)具有图形化操作界面。

weixin_46531010的博客 661

Java实现 LeetCode 6 Z字形变换

6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行...

南 墙 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode——Z 字形变换——百日算法成就第六天6%

从上到下一行放一个,到最后一行然后再从下往上一行放一个,到第一行后再从上到下一行放一个…这里我们需要创建一个数组或者集合来存储每一行的元素,那我们咱们确定一个元素该放在 第几行呢,这里直接按个放就行了,只需要控制一个方向,在碰到上边界的时候让他往下走,碰到下边界的时候让他往上走,OK,让我们一起打羽毛球吧,嘿嘿,需要一个东西来控制羽毛球的路线,那就到我这边我用球拍给他来一下,到你那边你再用球拍来一下。之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。

qq_45896330的博客 2176

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LeetCode刷题汇总

剑指offer 剑指 Offer 03 数组中重复的数字 剑指 Offer 04 二维数组中的查找 剑指 Offer 05 替换空格 剑指 Offer 06 从尾到头打印链表 剑指 Offer 07 重建二叉树 剑指 Offer 09 用两个栈实现队列 剑指 Offer 10- I 斐波那契数列 剑指 Offer 10- II 青蛙跳台阶问题 剑指 Offer 11 旋转数组的最小数字 剑指 Offer 12 矩阵中的路径 剑指 Offer 13 机器人的运动范围 剑指 Offer 14- I 剪绳子 剑指

weixin_44171872的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

力扣刷题6.Z 字形变换

英文题目 ZigZag Conversion The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) 将一个给...

菜不是原罪 309

LeetCode:Z 字形变换

刷题神器:LeetCode官方网站 一、题目还原 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行数变换的函数: string convert(stri...

郎才女喵的博客 218

【6. Z 字形变换】

题目要求将给定字符串按Z字形排列后按行读取。解题思路是通过模拟Z字形填充过程:先向下填充字符到指定行数,然后斜向上填充。实现时使用二维数组存储字符,最后按行拼接结果。提供了C++、Java、Python和JavaScript四种语言的实现代码,其中JavaScript版本可能存在性能问题未被通过。时间复杂度O(n),空间复杂度O(n^2)。虽然解法效率不高(仅超越5.17%用户),但提供了清晰的模拟思路。文末还附带了新年祝福和求赞信息。

2302_79395855的博客 947

力扣:6.Z 字形变换 题解(Java)

题目地址: 题目描述: 解题思路: 代码:

HOOHV的博客 441

力扣6.Z字形变换(java)

力扣6.Z字形变换题目思路代码 LeetCode笔记汇总 题目 思路 先考虑特殊情况:当行数为1时,只有一行,即直接输出s即可 当行数大于1时,由于涉及到了较多的字符串拼接,所以使用StringBuilder来处理 主要的思路为按行读取字符,则一共需要读取numRows行。观察图像我们可以发现图像结构的规律为2*numRows-2为一组。 我们以第i行(i从0开始)为例分析:首先每一组的第i个如果存在则一定就是第i行的字符。 当i不为第0行或第numRows行时,则还需添加位于z的斜边的字符 代码 c

k_surge的博客 371

LeetCode第七题 Z字形变换

文章目录问题描述:解题思路:代码实现: 问题描述: 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int nu

覃会程的博客 535

LeetCode刷题笔记 6. Z 字形变换

题目总结 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int numRows); 示例 1: 输入: s = “LEETCODEISHIRING”, numRows = ...

XIIV13的博客 219

【一起刷LeetCode】Z 字形变换

题目描述 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int numRows); ...

864

Leetcode 6. Z 字形变换

6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的函数: string convert(string s, int numRows); ...

星辰大数据的博客 824

6、Java算法题之Z字形变换

Java算法题之Z字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进...

Tang_Xiaokang的博客 302
上一篇: java数据结构与算法刷题-----LeetCode5:最长回文子串
下一篇: java数据结构与算法刷题-----剑指 Offer II 119:最长连续序列
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值