我需要编写一个方法来构建二维数组 - 使用从 1 到 n 的数字的金字塔。
int[][] build(int n)
但我不知道什么算法可以帮助我。谁能帮助我如何根据 n 预测数组大小?
示例:build(6) 返回
{{0, 0, 1, 0, 0},
{0, 2, 0, 3, 0},
{4, 0, 5, 0, 6}}
最佳答案
一个好的第一步可能是根据给定的 N 查看数组需要多少行。一旦您发现获取列数并相应地填充它们应该是一件相对简单的事情。
因此,让我们在图表上将 Rows 和 N 之间的关系绘制为 X 和 Y。您可以绘制它或在脑海中想象它:(1,1)、(2,3)、(3,6) 等...
如您所见,这不是线性的,而且看起来是抛物线的。所以你可以做一点代数或使用程序为你计算抛物线: http://www.wolframalpha.com/input/?i=parabola+(1,1),(2,3),(3,6)
为确认方程式有效,用 X=4 和 X=5 进行测试,是的,它有效。 Y = 0.5X^2 + 0.5X
希望这能给您一个开始,使您能够解决剩余的作业。
关于java - 如何构建二维数组金字塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49588511/