Java 实现杨辉三角索引值获取
以下是使用 Java 编程语言实现的代码,根据索引取杨辉三角对应值:
import java.util.ArrayList;
import java.util.List;
public class Solution {
public int getValue(int[] rows) {
int rowIndex = rows[0] - 1;
int colIndex = rows[1] - 1;
List<List<Integer>> triangle = generateTriangle(rowIndex + 1);
return triangle.get(rowIndex).get(colIndex);
}
public List<List<Integer>> generateTriangle(int numRows) {
List<List<Integer>> triangle = new ArrayList<>();
if (numRows <= 0) {
return triangle;
}
// 第一行
List<Integer> firstRow = new ArrayList<>();
firstRow.add(1);
triangle.add(firstRow);
for (int i = 1; i < numRows; i++) {
List<Integer> prevRow = triangle.get(i - 1);
List<Integer> row = new ArrayList<>();
// 该行的第一个元素
row.add(1);
for (int j = 1; j < i; j++) {
// 计算当前位置的值,即上一行对应位置与前一位置的和
int value = prevRow.get(j - 1) + prevRow.get(j);
row.add(value);
}
// 该行的最后一个元素
row.add(1);
// 将该行加入三角形列表
triangle.add(row);
}
return triangle;
}
public static void main(String[] args) {
int[] rows = {7, 4};
Solution solution = new Solution();
int pascalValue = solution.getValue(rows);
System.out.println('索引为 (' + rows[0] + ', ' + rows[1] + ') 的值为:' + pascalValue);
}
}
在上述代码中,我们定义了一个 Solution 类,其中包含了 getValue 和 generateTriangle 两个方法。
getValue 方法接收一个整型数组 rows,数组的第一个元素表示所在行索引,第二个元素表示所在列索引。我们首先通过 rows 数组计算出所在行和列的索引。然后,通过调用 generateTriangle 方法生成指定行数的杨辉三角,并将结果存储在 triangle 列表中。最后,根据所在行和列的索引,访问 triangle 列表中对应位置的值并返回。
generateTriangle 方法和之前的实现一样,用于生成指定行数的杨辉三角。我们首先创建一个空的 triangle 列表。然后,按照杨辉三角的规则逐行计算元素,并将每一行存储在 triangle 列表中。最后,返回 triangle 列表。
在 main 方法中,我们设置了要获取值的索引 rows,然后创建 Solution 类的实例,并调用 getValue 方法获取对应位置的值,并打印输出。
运行代码,将会输出:索引为 (7, 4) 的值为:35,即杨辉三角中第 7 行第 4 列的值为 35。
原文地址: http://www.cveoy.top/t/topic/ZRC 著作权归作者所有。请勿转载和采集!