Leetcode 1389:按既定顺序创建目标数组(超详细的解法!!!)
in leetcode with 0 comment

Leetcode 1389:按既定顺序创建目标数组(超详细的解法!!!)

in leetcode with 0 comment

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

请你返回目标数组。

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

示例 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]

提示:

解题思路

很容易写出暴力解法,就是调用insert函数。

class Solution:
    def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
        res = []
        for i, v in enumerate(nums):
            res.insert(index[i], v)
        return res

不使用内置函数的话,可以这样处理,每次将插入位置之后的所有元素向后移动一位。

class Solution:
    def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
        res = [0] * len(nums)
        for i, v in enumerate(nums):
            for j in range(len(nums) - 2, index[i] - 1, -1):
                res[j + 1] = res[j]
            res[index[i]] = v
        return res

我将该问题的其他语言版本添加到了我的GitHub Leetcode

如有问题,希望大家指出!!!

「如果我的文章对你有很大帮助,那么不妨~!」

coordinate

谢谢老板O(∩_∩)O~

使用微信扫描二维码完成支付

Responses