ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

千问 LeetCode 6.Z字形变换 Python3实现

千问    LeetCode 6.Z字形变换 Python3实现 LeetCode 6「Z 字形变换」的 Python3 实现如下核心思路模拟 Z 字形排列的过程用 numRows 个桶列表分别装每一行的字符遍历字符串时控制一个方向指针碰到顶部就向下走碰到底部就向上走最后把各行拼接起来即可。代码实现class Solution:def convert(self, s: str, numRows: int) - str:if numRows 1 or numRows len(s):return s# 每行一个桶rows [ for _ in range(numRows)]cur_row 0going_down False # 方向标记for char in s:rows[cur_row] char# 到达顶部或底部时反转方向if cur_row 0 or cur_row numRows - 1:going_down not going_downcur_row 1 if going_down else -1return .join(rows)复杂度分析项目 复杂度时间 O(n)n 为字符串长度每个字符只访问一次空间 O(n)所有桶加起来存的就是原字符串运行示例以 s PAYPALISHIRING, numRows 3 为例P A H NA P L S I I GY I R- 遍历过程P→A→Y→P→A→L→...行号变化为 0→1→2→1→0→1→2→...- 各桶最终内容rows[0]PAHN, rows[1]APLSIIG, rows[2]YIR- 拼接结果PAHNAPLSIIGYIR边界处理- numRows 1只有一行直接返回原字符串- numRows len(s)行数比字符还多每行最多一个字符也直接返回原字符串这两个提前返回可以避免后续逻辑出现除零或无意义计算。这道题其实还有 O(1) 空间的数学规律解法要看看吗
返回列表