Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Decode XORed Permutation

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "1734" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, 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

There is an integer array perm that is a permutation of the first n positive integers, where n is always odd. It was encoded into another integer array encoded of length n - 1, such that encoded[i] = perm[i] XOR perm[i + 1]. For example, if perm = [1,3,2], then encoded = [2,1]. Given the encoded array, return the original array perm. It is guaranteed that the answer exists and is unique. Example 1: Input: encoded = [3,1] Output: [1,2,3] Explanation: If perm = [1,2,3], then encoded = [1 XOR 2,2 XOR 3] = [3,1] Example 2: Input: encoded = [6,5,4,6] Output: [2,4,1,5,3] Constraints: 3 <= n < 105 n is odd. encoded.length == n - 1

Explanation

  • Calculate the XOR of all numbers from 1 to n: Since perm is a permutation of numbers from 1 to n, the XOR of all elements in perm is simply the XOR of numbers from 1 to n.
    • Calculate the XOR of encoded elements at even indices: The XOR of encoded[0], encoded[2], encoded[4], ... is equivalent to (perm[0] ^ perm[1]) ^ (perm[2] ^ perm[3]) ^ .... If we XOR this result with the XOR of all numbers from 1 to n, most of the perm elements will cancel out, leaving us with the last element of perm, which is perm[0].
    • Reconstruct the perm array: Once perm[0] is known, we can easily reconstruct the rest of the perm array by XORing perm[i] with encoded[i] to get perm[i+1].
  • Runtime Complexity: O(n), Storage Complexity: O(n)

Code

    def decode(encoded: list[int]) -> list[int]:
    """
    Decodes the original permutation array from the encoded array.

    Args:
        encoded: The encoded array where encoded[i] = perm[i] XOR perm[i+1].

    Returns:
        The original permutation array perm.
    """
    n = len(encoded) + 1
    total_xor = 0
    for i in range(1, n + 1):
        total_xor ^= i

    even_xor = 0
    for i in range(0, len(encoded), 2):
        even_xor ^= encoded[i]

    first_element = total_xor ^ even_xor
    perm = [first_element]
    for i in range(len(encoded)):
        perm.append(perm[-1] ^ encoded[i])

    return perm

More from this blog

C

Chatmagic blog

2894 posts