首页 > 其他分享 >[补题记录]LeetCode 6.Z字形变换

[补题记录]LeetCode 6.Z字形变换

时间:2024-06-02 14:57:22浏览次数:24  
标签:字形 int numRows 补题 ans now LeetCode dir mp

传送门:Z字形变换

转自:Z字形变换

Thought/思路

关键点在于,最后的答案是一行行连接起来的。

这样我们就会发现,这个 Z 字,实际上会让行数 不断加 1,然后又 不断减 1。每次按顺序选择 S 中的一个字符即可。

Code/代码

class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows == 1) return s;

        std::map<int, std::vector <std::string>> mp;

        int now = 0, dir = 1;
        for (int i = 0; i < s.length(); ++ i) {
            if (dir == 1) now ++;
            if (dir == 0) now --;

            mp[now].push_back(s.substr(i, 1));

            if (now == numRows) dir = 0;
            if (now == 1) dir = 1;
        }

        std::string ans = "";
        for (int i = 1; i <= numRows; ++ i) {
            for (auto &item : mp[i]) {
                ans += item;
            }
        }

        return ans;
    }
};

标签:字形,int,numRows,补题,ans,now,LeetCode,dir,mp
From: https://blog.csdn.net/joyride_run/article/details/139391561

相关文章

  • [leetcode 第 400 场周赛]题解
    第一题:classSolution{publicintminimumChairs(Strings){intx=0;intans=0;for(inti=0;i<s.length();i++){if(s.charAt(i)=='E'){x--;if(x<0){ans++;x=0;......
  • 【LeetCode:575. 分糖果+ 哈希表】
    ......
  • LeetCode 1652. 拆炸弹
    1652.拆炸弹你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。为了获得正确的密码,你需要替换掉每一个数字。所有数字会 同时 被替换。如果 k>0 ,将第 i 个数字用 接下来 k 个数字之和替换。如果 k<0 ,......
  • Q3 LeetCode34 在排序数组中找起始位置
    提交错误:数组访问越界1.验证数组越界的语句要放在执行语句的前面,要不然前面报错无法进行到后面部分2.本题使用两次二分查找,左边界找到后,将rigiht指针设置成mid-1,继续查找更左的边界,右边界同理将left设置成mid+13.newint[]{1,1}  新数组创建方式 1classSolution{......
  • (nice!!!)LeetCode 2928. 给小朋友们分糖果 I(枚举、容斥原理)
    2928.给小朋友们分糖果I思路:方法一,三层for循环直接暴力枚举,时间复杂度0(n^3)classSolution{public:intdistributeCandies(intn,intlimit){intans=0;for(inti=0;i<=n&&i<=limit;i++){for(intj=0;j<=n&&j<=limit;j++){......
  • LeetCode 第15题:三数之和的解析
    大家好!本文我们将要探索的是LeetCode的第15题:三数之和。我们的目标是在一片数字的海洋中寻找三颗神奇的珍珠,它们的和为零。准备好了吗?让我们一同踏上这段充满挑战和乐趣的旅程吧!文章目录题目介绍解题思路思路1:暴力法思路2:双指针法思路3:哈希表法思路4:回溯法思......
  • Q2 LeetCode35 搜索插入位置
    //有序查找,无重复元素,要求时间复杂度O(logn)//如果有目标元素则返回位置//如果没有目标元素,最后一次right位置后面就是该插入的位置第一次提交错误认为最后一次mid位置是插入的位置,其实最后一次right位置才是正确的插入位置(升序数组)1classSol......
  • LeetCode 704 二分查找
    第一次提交错误:if-else语句中第二个if前未加else,导致循环出错//二分查找//有序情况下的查找方式,时间复杂度O(logn)//注意左右边界以及停止循环条件left<=right classSolution{publicintsearch(int[]nums,inttarget){......
  • LeetCode---哈希表
    242.有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。代码示例: //时间复杂度:O(n)//空间复杂度:O(1)classSolution{public:......
  • LeetCode 第14题:最长公共前缀题目解析(进阶版)
    本文我们来探索LeetCode第14题——最长公共前缀题目解析(进阶版)。文章目录引言题目介绍解题思路思路1:水平扫描法思路2:垂直扫描法思路3:分治法思路4:二分查找法思路5:字典树(Trie)水平扫描法详细解析步骤1:初始化前缀步骤2:逐个比较示例讲解Java代码实现图......