algoadvance

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 
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 
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:

Clarifying Questions

  1. Are there any edge cases we should consider?
    • Given the constraints, the minimum length of nums will be 1, hence consider the single-element scenario.
  2. Should we handle invalid inputs?
    • For this problem, we assume inputs will be valid as per the constraints provided.

Strategy

  1. Create an empty list ans of the same length as nums.
  2. Iterate through the index i from 0 to len(nums) - 1.
  3. For each index i, set ans[i] = nums[nums[i]].
  4. Return the list ans.

Code

def buildArray(nums):
    ans = [0] * len(nums)  # Initialize the result array with the same length as nums
    for i in range(len(nums)):
        ans[i] = nums[nums[i]]  # Fill in the values based on the permutation rule
    return ans

# Example usage
print(buildArray([0, 2, 1, 5, 3, 4]))  # Output: [0, 1, 2, 4, 5, 3]
print(buildArray([5, 0, 1, 2, 3, 4]))  # Output: [4, 5, 0, 1, 2, 3]

Time Complexity

Try our interview co-pilot at AlgoAdvance.com