Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Restore the Array From Adjacent Pairs

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "1743" 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 nums that consists of n unique elements, but you have forgotten it. However, you do remember every pair of adjacent elements in nums. You are given a 2D integer array adjacentPairs of size n - 1 where each adjacentPairs[i] = [ui, vi] indicates that the elements ui and vi are adjacent in nums. It is guaranteed that every adjacent pair of elements nums[i] and nums[i+1] will exist in adjacentPairs, either as [nums[i], nums[i+1]] or [nums[i+1], nums[i]]. The pairs can appear in any order. Return the original array nums. If there are multiple solutions, return any of them. Example 1: Input: adjacentPairs = [[2,1],[3,4],[3,2]] Output: [1,2,3,4] Explanation: This array has all its adjacent pairs in adjacentPairs. Notice that adjacentPairs[i] may not be in left-to-right order. Example 2: Input: adjacentPairs = [[4,-2],[1,4],[-3,1]] Output: [-2,4,1,-3] Explanation: There can be negative numbers. Another solution is [-3,1,4,-2], which would also be accepted. Example 3: Input: adjacentPairs = [[100000,-100000]] Output: [100000,-100000] Constraints: nums.length == n adjacentPairs.length == n - 1 adjacentPairs[i].length == 2 2 <= n <= 105 -105 <= nums[i], ui, vi <= 105 There exists some nums that has adjacentPairs as its pairs.

Explanation

Here's the breakdown of the approach and the Python code:

  • High-Level Approach:

    • Build an adjacency list (a graph representation) from the adjacentPairs.
    • Identify the start node(s) - nodes with degree 1 (appearing only once in the adjacency list). This is because the array starts and ends with such elements.
    • Perform a Depth-First Search (DFS) or Breadth-First Search (BFS) starting from one of the start nodes to reconstruct the array.
  • Complexity:

    • Runtime Complexity: O(n), where n is the number of elements in the array.
    • Storage Complexity: O(n)

Code

    def restoreArray(adjacentPairs):
    """
    Restores the original array from adjacent pairs.

    Args:
        adjacentPairs: A list of adjacent pairs.

    Returns:
        The original array.
    """

    adj_list = {}
    for u, v in adjacentPairs:
        if u not in adj_list:
            adj_list[u] = []
        if v not in adj_list:
            adj_list[v] = []
        adj_list[u].append(v)
        adj_list[v].append(u)

    start_nodes = []
    for node, neighbors in adj_list.items():
        if len(neighbors) == 1:
            start_nodes.append(node)

    result = []
    visited = set()

    def dfs(node):
        result.append(node)
        visited.add(node)
        for neighbor in adj_list[node]:
            if neighbor not in visited:
                dfs(neighbor)

    dfs(start_nodes[0])  # Start DFS from the first start node

    return result

More from this blog

C

Chatmagic blog

2894 posts

Solving Leetcode Interviews in Seconds with AI: Restore the Array From Adjacent Pairs