题解 | #Redraiment的走法#
Redraiment的走法
https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] ints = new int[n]; for (int i = 0; i < n; i++) { ints[i] = scanner.nextInt(); } System.out.println(maxAscendingSteps(ints)); } public static int maxAscendingSteps(int[] heights) { int[] ints = new int[heights.length]; // 默认步数1 Arrays.fill(ints, 1); // 从第二个元素开始遍历 for (int i = 1; i < heights.length; i++) { // 确定之前每个元素到该元素可以跳的最大步数 for (int k = 0; k < i; k++) { if (heights[k] < heights[i]) { // 跳到当前位置i的最大步数 = 跳到某个位置的已有步数 + 1 ints[i] = Math.max(ints[i], ints[k] + 1); } } } Arrays.sort(ints); return ints[ints.length - 1]; } }