📅  最后修改于: 2023-12-03 15:42:13.600000             🧑  作者: Mango
该篇文章为 GATE CS Mock 2018年的第30个问题。
这个问题要求我们编写Java代码,输出一个关于左导致右的路径方案。
Java代码实现如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int[] result = new int[n];
for (int i = n - 2; i >= 0; i--) {
if (arr[i] == 1) {
result[i] = i + 1;
} else {
int j = i + 1;
while (arr[j] != 1 && j < n - 1) {
j = result[j];
}
result[i] = j;
}
}
for (int i = 0; i < n; i++) {
System.out.print(result[i] + " ");
}
}
}
主要思路是:
最后输出result数组中的每个元素。
代码的时间复杂度为 O(n),空间复杂度为 O(n)。
此代码是一个基础的 Java 编程问题,但概念性较强。本题需要灵活使用数组处理思想来遍历输入的数组,并将结果保存在数组中。
对于初学者来说,需要加强对数组及其遍历方法的理解。