devoalda.gitlab.io/content/en/posts/2023-02-11-leetcode-build-a...

1.5 KiB

layout title date categories tags author math libraries
post Leetcode - Build Array From Permutation (1920) 2023-02-11 08:02:32 +0800
Code
Java
java
devoalda true
mathjax

Description

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

Input: nums = [0,2,1,5,3,4]
Output: [0,1,2,4,5,3]
Explanation: The array ans is built as follows:
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]

{: file="Input/Output"}

Thought Process

Simple Brute force method that requires O(n) time and space complexity.\

Using the explanation, Ive created a new array (ans) and assigned the elements of ans with the corrosponding values from nums[nums[i]], where i is the index of the for loop.

Code

class Solution {
    public int[] buildArray(int[] nums) {
        int[] ans = new int[nums.length];

        for(int i = 0; i < nums.length; i++){
            ans[i] = nums[nums[i]];
        }
        return ans;
    }
}

{: file="Solution.java" }

Afterthoughts

This could be improved to O(1) time and space complexity but I need more experience with data structures and algorithms. This is also my first Java leetcode attempt.