# Solving Leetcode Interviews in Seconds with AI: Build Array from Permutation


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "1920" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> 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:  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: 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)? 

	# Explanation
	Here's the breakdown of the solution:

*   **In-place modification:** The core idea is to modify the original array `nums` to store the desired result without using extra space. We achieve this by encoding the result in the existing array's elements.
*   **Encoding and decoding:** We encode the desired value `nums[nums[i]]` into `nums[i]` by using modulo and division operations. Specifically, we store `nums[nums[i]]` by adding `nums[nums[i]] % n * n` to `nums[i]`. Later, we can extract the encoded value by dividing `nums[i]` by `n`.
*   **Iterate and decode:** Finally, we iterate through the modified array and decode the values to get the result in the correct format.

*   **Runtime Complexity: O(n), Storage Complexity: O(1)**

	
	# Code
	```python
	def buildArray(nums):
    n = len(nums)

    # Encoding phase: Store nums[nums[i]] in nums[i]
    for i in range(n):
        nums[i] += (nums[nums[i]] % n) * n

    # Decoding phase: Extract the stored values
    for i in range(n):
        nums[i] //= n

    return nums
	```
			
