1. 程式人生 > 其它 >LeetCode 1920. 基於排列構建陣列(Build Array from Permutation)

LeetCode 1920. 基於排列構建陣列(Build Array from Permutation)

1920. 基於排列構建陣列

給你一個從 0 開始的排列nums(下標也從 0 開始)。請你構建一個同樣長度的陣列ans,其中,對於每個i0 <= i < nums.length),都滿足ans[i] = nums[nums[i]]。返回構建好的陣列ans

從 0 開始的排列nums是一個由0nums.length - 10nums.length - 1也包含在內)的不同整陣列成的陣列。

Given a zero-based permutation nums (0-indexed), build an array ans of the same length where ans[i] = nums[nums[i]] for each 0 <= i < nums.length and return it.

A zero-based permutation nums is an array of distinct integers from 0 to nums.length - 1 (inclusive).


示例 1:

輸入:nums = [0,2,1,5,3,4]
輸出:[0,1,2,4,5,3]
解釋:陣列 ans 構建如下:
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]
= [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]]
= [0,1,2,4,5,3]


示例 2:

輸入:nums = [5,0,1,2,3,4]
輸出:[4,5,0,1,2,3]
解釋:陣列 ans 構建如下:
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]
= [nums[5], nums[0], nums[1], nums[2], nums[3], nums[4]]
= [4,5,0,1,2,3]


提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] < nums.length
  • nums 中的元素 互不相同

題解一(python):

1 class Solution:
2     def buildArray(self, nums: List[int]) -> List[int]:
3         ans = []
4         i = 0
5         for i in range(len(nums)):
6              ans.append(nums[nums[i]])
7         return ans

題解二(python):

1 class Solution:
2     def buildArray(self, nums: List[int]) -> List[int]:
3         ## ans = nums #這樣賦值在本題是有問題的,改變ans中的內容,nums中的內容也會同步修改
4         ans = copy.deepcopy(nums) # 用cpoy進行深拷貝就可以避免(需要import copy)
5         # ans = nums[:] #或者用此方法即可
6         i = 0
7         for i in range(len(nums)):
8             ans[i] = nums[nums[i]]
9         return ans