You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 1389:按指定顺序创建目标数组的代码问题求助

解决LeetCode《按指定顺序创建目标数组》的代码问题

问题核心

题目要求按顺序将nums[i]插入到target数组的index[i]位置,核心是插入操作——插入时需要将目标位置及之后的元素向后移动,再放入新元素,而不是直接覆盖目标位置的值。你的代码逻辑完全偏离了这个要求,导致结果错误。

错误代码的问题点

  • 嵌套的j循环完全冗余:每次外层循环执行时,内层循环会把target[index[i]]重复赋值nums.length次,最终每个位置只会保留最后一次被赋值的元素,完全没有模拟插入过程。
  • 直接赋值数组元素:普通数组长度固定,插入元素必须先将目标位置及后续元素后移一位,你的代码跳过了这个关键步骤,直接覆盖值,根本不是插入逻辑。

正确解法

方法一:利用ArrayList的插入特性(简单直观)

ArrayList的add(int index, E element)方法可以直接在指定位置插入元素,自动处理后续元素的后移,非常适配该场景:

import java.util.ArrayList;
import java.util.Arrays;

public class LeetCode1389 {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(createTargetArray(new int[]{0,1,2,3,4}, new int[]{0,1,2,2,1})));
    }

    static int[] createTargetArray(int[] nums, int[] index) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            list.add(index[i], nums[i]);
        }
        // 将ArrayList转为int数组
        int[] target = new int[nums.length];
        for (int i = 0; i < list.size(); i++) {
            target[i] = list.get(i);
        }
        return target;
    }
}

方法二:手动用数组实现插入逻辑(理解底层原理)

如果不想用集合,可以手动处理数组元素的后移操作:

import java.util.Arrays;

public class LeetCode1389 {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(createTargetArray(new int[]{0,1,2,3,4}, new int[]{0,1,2,2,1})));
    }

    static int[] createTargetArray(int[] nums, int[] index) {
        int[] target = new int[nums.length];
        // 记录当前target数组中已插入的元素个数
        int size = 0;
        for (int i = 0; i < nums.length; i++) {
            int idx = index[i];
            // 将idx到size-1位置的元素向后移动一位
            for (int j = size; j > idx; j--) {
                target[j] = target[j-1];
            }
            // 插入当前元素
            target[idx] = nums[i];
            size++;
        }
        return target;
    }
}

测试结果

对于输入nums = [0,1,2,3,4],index = [0,1,2,2,1],正确输出为[0,4,1,3,2],上述两种解法均可得到该结果。

内容的提问来源于stack exchange,提问作者Sourav Borah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:45:34