Mobile coding works. A laptop is faster for long sessions.
Problem
Two arrays of integers `a` and `b` are given, both sorted in
non-decreasing order (they may have repeated values within each array). Print
the values that appear in both arrays, each common value
printed exactly once, in non-decreasing order.
The required algorithm is a variant of the two-pointer merge: when
`a[i] < b[j]` advance `i`, when `a[i] > b[j]` advance `j`, and on
equality add the value to the result and advance both indices.
Input:
The program reads from standard input:
- a natural number `n`, followed by `n` integers (array `a`);
- a natural number `m`, followed by `m` integers (array `b`).
- `1 <= n, m <= 1000`
- `-1000000 <= values <= 1000000`
- the arrays are sorted in non-decreasing order and may contain duplicates
Output:
The program prints on the first line the number `k` of distinct values common
to both arrays. If `k > 0`, the second line contains the `k`
values, separated by a single space. If `k = 0`, no further line is printed.
Example:
Input:
5
1 2 3 4 5
4
2 4 6 8
Output:
2
2 4
Stuck?
Use the Get Hint button in the action bar to reveal a guided hint.
💬 Discussion
Loading...💬
No comments yet. Be the first to start the discussion!
💻 No output yet.
Click Run in the editor to execute your code with the custom input.
Solve it your way first
Community solutions unlock after you submit a passing solution. Don't peek.
Ready to solve this challenge?
Create a free account to write code, submit solutions, and track your progress.
⌨️ Keyboard Shortcuts
Code Editor
Run Code
Ctrl
Enter
Submit Code
Ctrl
Shift
Enter
Format Code
Shift
Alt
F
Toggle Comment
Ctrl
/
Undo
Ctrl
Z
Redo
Ctrl
Y
Navigation
Global Search
/
Show Shortcuts
?
Close Modal
Esc