Teaching Kids Programming: Videos on Data Structures and Algorithms
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).
Example 1:
Input: nums = [0,2,1,5,3,4]
Output: [0,1,2,4,5,3]
Explanation: The array ans is built as follows:
1 2 3 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]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]Example 2:
Input: nums = [5,0,1,2,3,4]
Output: [4,5,0,1,2,3]
Explanation: The array ans is built as follows:
1 2 3 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]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]Constraints:
1 <= nums.length <= 1000
0 <= nums[i] < nums.length
The elements in nums are distinct.Follow-up: Can you solve it without using an extra space (i.e., O(1) memory)?
Just apply what’s said in the statement.
Notice that you can’t apply it on the same array directly since some elements will change after application
Build Array from Permutation via Simulation
Using an additional array and then append each via Simulation:
1 2 3 4 5 6 | class Solution: def buildArray(self, nums: List[int]) -> List[int]: ans = [] for i in range(len(nums)): ans.append(nums[nums[i]]) return ans |
class Solution: def buildArray(self, nums: List[int]) -> List[int]: ans = [] for i in range(len(nums)): ans.append(nums[nums[i]]) return ans
One liner via List Comprehension:
1 2 3 | class Solution: def buildArray(self, nums: List[int]) -> List[int]: return [nums[nums[i]] for i in range(len(nums))] |
class Solution: def buildArray(self, nums: List[int]) -> List[int]: return [nums[nums[i]] for i in range(len(nums))]
Iterating over the values instead of indices:
1 2 3 | class Solution: def buildArray(self, nums: List[int]) -> List[int]: return [nums[i] for i in nums] |
class Solution: def buildArray(self, nums: List[int]) -> List[int]: return [nums[i] for i in nums]
–EOF (The Ultimate Computing & Technology Blog) —
Last Post: A Simple Function to Perform Integer/Float Arithmetic Calculation via AWK
Next Post: BASH Script to Compute the Math.PI constant via Monte Carlo Simulation