关于做网站,推广企业网站域名,大朗仿做网站,wordpress query.php#x1f525;个人主页#xff1a;Cx330#x1f338;
❄️个人专栏#xff1a;《C语言》《LeetCode刷题集》《数据结构-初阶》《C知识分享》
《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔
《Git深度解析》:版本管理实战全解
#x1f31f;心向往之行必…个人主页Cx330❄️个人专栏《C语言》《LeetCode刷题集》《数据结构-初阶》《C知识分享》《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔《Git深度解析》:版本管理实战全解心向往之行必能至Cx330的简介前言聚焦算法题实战系统讲解三大核心板块“精准定位最优解”——优选算法“简化逻辑表达系统性探索与剪枝优化”——递归与回溯“以局部最优换全局高效”——贪心算法讲解思路与代码实现帮助大家快速提升代码能力41. Z 字形变换题目链接6. Z 字形变换 - 力扣LeetCode题目描述题目示例算法原理模拟思路找规律用 row 代替行数row 4 时画出的 N 字形如下0 2row - 2 4row - 41 2row - 3 2row - 1 4row - 5 4row - 32 2row-4 2row 4row - 6 4row - 23 2row 1 4row - 1不难发现数据是以 2row - 2 为⼀个周期进行规律变换的。将所有数替换成用周期来表示的变量第一行的数是0, 2row - 2, 4row - 4第二行的数是1, (2row - 2) - 1, (2row - 2) 1, (4row - 4) - 1, (4row - 4) 1第三行的数是2, (2row - 2) - 2, (2row - 2) 2, (4row - 4) - 2, (4row - 4) 2第四行的数是3, (2row - 2) 3, (4row - 4) 3。可以观察到第一行、第四行为差为 2row - 2 的等差数列第二行、第三行除了第⼀个数取值为行数每组下标为(2n - 1, 2n)的数围绕2row - 2的倍数左右取值。以此规律我们可以写出迭代算法。模拟解法代码Cclass Solution { public: string convert(string s, int numRows) { string ret; int d2*numRows-2,ns.size(); //如果n1直接返回原字符串 if(numRows1) return s; //处理第一行 for(int i0;in;id) rets[i]; //处理中间行 for(int k1;knumRows-1;k) { for(int ik,jd-k;in||jn;id,jd) { if(in) rets[i]; if(jn) rets[j]; } } //处理最后一行 for(int inumRows-1;in;id) rets[i]; return ret; } };博主手记字体还请见谅哈42. 外观数列题目链接38. 外观数列 - 力扣LeetCode题目描述题目示例算法原理模拟思路所谓【外观数列】其中只是依次统计字符串中连续且相同的字符的个数。依据题意依次模拟即可。模拟解法代码Cclass Solution { public: string countAndSay(int n) { string ret1; for(int i1;in;i)//解释n-1次ret { string tmp; int lenret.size(); for(int left0,right0;rightlen;) { while(rightlenret[left]ret[right]) right; //to_string获取元素个数 tmpto_string(right-left)ret[left]; leftright; } rettmp; } return ret; } };博主手记字体还请见谅哈总结结语本文分享了两个算法题的解题思路和C实现。首先针对Z字形变换问题通过观察字符排列规律采用周期模拟法将字符串按特定顺序重组。其次解决外观数列问题通过统计连续相同字符个数生成新字符串。两题均采用模拟解法文章以实战为导向简洁明了地展示了从问题分析到代码落地的完整过程。