如何用Java非暴力实现下面的图形是著名的杨辉三角形: image 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, \cdots1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,⋯ 给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数? 输入描述 输入一个整数 N。 输出描述 输出一个整数代表答案。
时间: 2023-02-09 16:07:36 浏览: 137
可以用如下的 Java 代码来实现:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 存储杨辉三角的每一行
List<List<Integer>> triangle = new ArrayList<>();
triangle.add(Arrays.asList(1));
int i = 1;
while (true) {
List<Integer> row = new ArrayList<>();
row.add(1);
for (int j = 1; j < i; j++) {
row.add(triangle.get(i - 1).get(j - 1) + triangle.get(i - 1).get(j));
}
row.add(1);
triangle.add(row);
if (row.contains(n)) {
System.out.println(i * (i + 1) / 2 + row.indexOf(n));
break;
}
i++;
}
}
}
```
算法的时间复杂度为 O(N^2),空间复杂度为 O(N^2)。
上述代码使用了 Java 的 ArrayList 和 List 接口。
- ArrayList 是一个动态数组,能够动态地增加或减少元素。
- List 是一个接口,定义了一系列的操作,ArrayList 实现了 List 接口,因此可以使用 List 的所有方法。
在本例中,我们使用 ArrayList 来存储杨辉三角的每一行。
代码的执行流程如下:
1. 读入数据 N。
2. 初始化一个 ArrayList,并将第一行的数据 1 添加到 ArrayList 中。
3. 初始化变量 i 为 1。
4. 执行一个 while 循环,条件为 true,即一直循环到找到第一个出现 N 的数为止。
5. 在 while 循环中,初始化一个 ArrayList row,并将 1
阅读全文