

要解这个题目,我们需要构建一个新数组 ans,其中每个位置的值是通过使用 nums 数组中的值来索引 nums 数组本身。
具体而言,对于每个位置 i(0 <= i < nums.length),我们有: ans[i]=nums[nums[i]]
解题思路:
-
我们需要一个长度与
nums相同的数组ans。 -
对于每个索引
i,我们取出nums[i],然后把nums[i]作为索引去查找nums数组中的元素。这个值就赋给ans[i]。
Python 代码实现:
def buildArray(nums):
ans = [0] * len(nums) # 创建一个与 nums 同样大小的数组 ans
for i in range(len(nums)):
ans[i] = nums[nums[i]] # 根据题目要求填充 ans 数组
return ans
示例:
假设 nums = [0, 2, 1, 5, 3, 4],我们来一步步计算 ans。
-
ans[0] = nums[nums[0]] = nums[0] = 0 -
ans[1] = nums[nums[1]] = nums[2] = 1 -
ans[2] = nums[nums[2]] = nums[1] = 2 -
ans[3] = nums[nums[3]] = nums[5] = 4 -
ans[4] = nums[nums[4]] = nums[3] = 5 -
ans[5] = nums[nums[5]] = nums[4] = 3
所以最终返回的 ans 数组是: ans=[0,1,2,4,5,3]
时间复杂度:
-
我们需要遍历一次
nums数组,所以时间复杂度是 O(n),其中 n 是nums数组的长度。
空间复杂度:
-
我们需要额外的
ans数组,空间复杂度是 O(n)。
999

被折叠的 条评论
为什么被折叠?



