Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在Z字形LeetCode问题6中得出建议的方法2_Algorithm - Fatal编程技术网

Algorithm 如何在Z字形LeetCode问题6中得出建议的方法2

Algorithm 如何在Z字形LeetCode问题6中得出建议的方法2,algorithm,Algorithm,我在学习CS,我一直在解决问题,我提出了一个解决方案,采用了与第一种方法相同的方法 为了教育自己,我试着理解第二种方法,但我很难理解如何设计这些规则。对它们进行了描述 我的问题是,虽然我可以使用他们的规则,我可以从他们的公式中设计出这些数字,但我似乎没有数学能力让我自己看到我是如何“看到”它的 问题:如果你自己解决了这个问题,你提出了第二种方法-你使用了哪些技能来解决这个问题?我自己还没有解决这个问题,但是我想用第二种方法来解决这个问题的技能是分析和考虑数字/计数模式。如果我们沿着之字形走,很明

我在学习CS,我一直在解决问题,我提出了一个解决方案,采用了与第一种方法相同的方法

为了教育自己,我试着理解第二种方法,但我很难理解如何设计这些规则。对它们进行了描述

我的问题是,虽然我可以使用他们的规则,我可以从他们的公式中设计出这些数字,但我似乎没有数学能力让我自己看到我是如何“看到”它的


问题:如果你自己解决了这个问题,你提出了第二种方法-你使用了哪些技能来解决这个问题?

我自己还没有解决这个问题,但是我想用第二种方法来解决这个问题的技能是分析和考虑数字/计数模式。如果我们沿着之字形走,很明显,每个直线都有长度
num_行
(最后一行除外)。进一步思考,我们意识到,除了它所连接的底部和顶部之外,每个对角线也有相同数量的字符。因此,我们可以将每个南部->东北部组件计算为
num\u rows+num\u rows-2
个字符

利用上面的逻辑,我们可以写出公式

在第0行,我们没有偏移:

k * (num_rows + num_rows - 2)
在最后一行(
num_rows-1
),我们添加偏移计算的起始列:

k * (num_rows + num_rows - 2) + num_rows - 1
中间部分有点棘手,但基本上是一样的。如果我们知道每个垂直列的顶部,我们将添加
i
以获得第
i
行字符:

k * (num_rows + num_rows - 2) + i
要获得同一行中的字符,在该列后面的对角线“zag”上,我们查看下一列的开头并减去
i

(k + 1) * (num_rows + num_rows - 2) - i