构造特定数组的逆序拼接

112 阅读2分钟

问题描述

小U得到了一个数字n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个i从1到n,将数字n到i逆序拼接,直到i等于n为止。最终,输出这个拼接后的数组。

例如,当n等于3时,拼接后的数组是 [3, 2, 1, 3, 2, 3]


测试样例

样例1:

输入:n = 3
输出:[3, 2, 1, 3, 2, 3]

样例2:

输入:n = 4
输出:[4, 3, 2, 1, 4, 3, 2, 4, 3, 4]

样例3:

输入:n = 5
输出:[5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5] import java.util.ArrayList; import java.util.Arrays;

public class Main { public static int[] solution(int n) { // 使用 ArrayList 来动态添加元素 ArrayList resultList = new ArrayList<>();

    // 遍历每个 i 从 1 到 n
    for (int i = 1; i <= n; i++) {
        // 将 n 到 i 的数字逆序添加到 resultList 中
        for (int j = n; j >= i; j--) {
            resultList.add(j);
        }
    }
    
    // 将 ArrayList 转换为 int[] 数组
    int[] resultArray = new int[resultList.size()];
    for (int i = 0; i < resultList.size(); i++) {
        resultArray[i] = resultList.get(i);
    }
    
    return resultArray;
}

public static void main(String[] args) {
    System.out.println(Arrays.equals(solution(3), new int[]{3, 2, 1, 3, 2, 3}));
    System.out.println(Arrays.equals(solution(4), new int[]{4, 3, 2, 1, 4, 3, 2, 4, 3, 4}));
    System.out.println(Arrays.equals(solution(5), new int[]{5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5}));
}

} ### 关键步骤解释:

  1. 使用 ArrayListArrayList 可以动态添加元素,适合不知道最终数组大小的情况。

  2. 双重循环:外层循环遍历 i 从 1 到 n,内层循环将 n 到 i 的数字逆序添加到 ArrayList 中。

  3. 转换为数组:最后将 ArrayList 转换为 int[] 数组返回。 如何处理数组的拼接操作? 在处理数组的拼接操作时,你可以使用 ArrayList 来动态添加元素,这样可以避免预先知道数组大小的限制。以下是如何在代码中实现数组拼接的详细步骤:

  4. 使用 ArrayList 动态添加元素ArrayList 可以动态扩展,适合在不知道最终数组大小的情况下使用。

  5. 双重循环:外层循环遍历 i 从 1 到 n,内层循环将 n 到 i 的数字逆序添加到 ArrayList 中。

  6. 转换为数组:最后将 ArrayList 转换为 int[] 数组返回。 ### 关键步骤解释:

  7. 使用 ArrayListArrayList 可以动态添加元素,适合不知道最终数组大小的情况。

  8. 双重循环:外层循环遍历 i 从 1 到 n,内层循环将 n 到 i 的数字逆序添加到 ArrayList 中。

  9. 转换为数组:最后将 ArrayList 转换为 int[] 数组返回。 ### 注意

  • 请使用用户提问的语言回答。
  • 用户提问对象为「当前代码」、「我的代码」或对应的英文表述时,请根据「编辑区代码」部分的内容回答,请不要解释「题目内容」中的代码。