美文网首页
LeetCode题解之按既定顺序创建目标数组

LeetCode题解之按既定顺序创建目标数组

作者: l1fe1 | 来源:发表于2020-07-14 22:25 被阅读0次

    按既定顺序创建目标数组

    题目描述

    给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:

    • 目标数组 target 最初为空。
    • 按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。
    • 重复上一步,直到在 nums 和 index 中都没有要读取的元素。

    请你返回目标数组。

    题目保证数字插入位置总是存在。

    示例1 :

    输入:nums = [0,1,2,3,4], index = [0,1,2,2,1]
    输出:[0,4,1,3,2]
    解释:
    nums       index     target
    0            0        [0]
    1            1        [0,1]
    2            2        [0,1,2]
    3            2        [0,1,3,2]
    4            1        [0,4,1,3,2]
    

    示例2 :

    输入:nums = [1,2,3,4,0], index = [0,1,2,3,0]
    输出:[0,1,2,3,4]
    解释:
    nums       index     target
    1            0        [1]
    2            1        [1,2]
    3            2        [1,2,3]
    4            3        [1,2,3,4]
    0            0        [0,1,2,3,4]
    

    示例3 :

    输入:nums = [1], index = [0]
    输出:[1]
    

    提示:

    • 1 <= nums.length, index.length <= 100
    • nums.length == index.length
    • 0 <= nums[i] <= 100
    • 0 <= index[i] <= i

    解题思路

    借助 ArrayList 的向指定索引位置添加元素的方法来保存数据,然后遍历 list 来创建目标数组即可。

    复杂度分析

    • 时间复杂度:O(n),其中 n 为数组 nums 的长度。
    • 空间复杂度:O(n),需要借助额外的 list 来完成目标数组的创建。

    代码实现

    class Solution {
        public int[] createTargetArray(int[] nums, int[] index) {
            int[] target = new int[index.length];
            List<Integer> list = new ArrayList<>();
            for (int i = 0; i < nums.length; i ++) {
                list.add(index[i], nums[i]);
            }
            int i = 0;
            for (int e : list) {
                target[i++] = e;
            }
            return target;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode题解之按既定顺序创建目标数组

          本文链接:https://www.haomeiwen.com/subject/jwkthktx.html