Skip to content

Common Signals Between Space Probes

kyra-ptn edited this page Aug 11, 2024 · 3 revisions

Unit 2 Session 1 (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

  • Q: What is the problem asking for?

    • A: The problem asks to calculate two values:
      • answer1: the number of indices i such that signals1[i] exists in signals2.
      • answer2: the number of indices j such that signals2[j] exists in signals1.
  • Q: What are the inputs?

    • A: Two integer arrays signals1 and signals2 of sizes n and m, respectively.
  • Q: What are the outputs?

    • A: A list [answer1, answer2] where:
      • answer1 is the count of elements in signals1 that exist in signals2.
      • answer2 is the count of elements in signals2 that exist in signals1.
  • Q: Are there any constraints on the values in the arrays?

    • A: The values are integers, and the arrays can be of different lengths.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

Note: Like many interview questions, this problem can be solved in many ways. If you chose to approach this using sets, check out the Common-Signals-Between-Space-Probes-II solution guide.

General Idea: Use dictionaries to store the frequency of each element in both arrays and then count the occurrences of elements from one array in the other.

1. Initialize two empty dictionaries `freq_signals1` and `freq_signals2` to store the frequency of elements in `signals1` and `signals2`.
2. Populate `freq_signals2` with the frequency of each element in `signals2`.
3. Populate `freq_signals1` with the frequency of each element in `signals1`.
4. Calculate `answer1` by counting the elements in `signals1` that exist in `freq_signals2`.
5. Calculate `answer2` by counting the elements in `signals2` that exist in `freq_signals1`.
6. Return the list `[answer1, answer2]`.

I-mplement

def find_common_signals(signals1, signals2):
    # Create frequency dictionaries for both signals1 and signals2
    freq_signals1 = {}
    freq_signals2 = {}

    # Populate frequency dictionary for signals2
    for signal in signals2:
        if signal in freq_signals2:
            freq_signals2[signal] += 1
        else:
            freq_signals2[signal] = 1

    # Populate frequency dictionary for signals1
    for signal in signals1:
        if signal in freq_signals1:
            freq_signals1[signal] += 1
        else:
            freq_signals1[signal] = 1

    # Calculate answer1: the number of indices i such that signals1[i] exists in signals2
    answer1 = 0
    for signal in signals1:
        if signal in freq_signals2:
            answer1 += 1

    # Calculate answer2: the number of indices j such that signals2[j] exists in signals1
    answer2 = 0
    for signal in signals2:
        if signal in freq_signals1:
            answer2 += 1

    return [answer1, answer2]
Clone this wiki locally