Previous Next
0 / 4
Module DS-11DSJAVA

First Duplicate Detector

DSJAVA β€’ Data Structures and Algorithms in Java

Browser-only practice

Problem Statement

Application lab in Hash Tables and Collision Reasoning

Mission

Return the first value encountered for the second time.

Learning outcome: Apply a set to detect repetition

Correctness contract

Invariant: Equal keys produce equal hashes, and collision handling preserves every distinct key.

Required technique: Insert into a HashSet and return the first value whose insertion reports that it was already present.

Complexity target: time O(n) average; space O(n).

Input and output

Input: n followed by exactly n integers. Whitespace may be spaces or line breaks.

Output: Print the first repeated value, or NONE when no value repeats. Return it as a String; Main.java prints it without adding other text.

Assumptions:

  • n is positive and is followed by exactly n signed integers.

Before you code

  1. Restate the input and output contract, then predict the visible example without running code.
  2. Implement the core state transition: Insert into a HashSet and return the first value whose insertion reports that it was already present.
  3. Trace the smallest boundary case, verify exact formatting, and justify the authored time and auxiliary-space bounds.

Implement Practice.solve(Scanner sc). Keep every provided filename and public class name unchanged.

Sample input

5 4 7 9 7 4

Sample output

7

Why the sample works: Visible walkthrough for the ordinary non-trivial path. The first value rejected by set insertion is the earliest value encountered for a second time. Input `5 4 7 9 7 4` therefore produces `7`.

Progressive hints

Try the trace and first milestone before opening a hint. Open them in order.

Open hint 1

Hint 1 β€” Contract: identify what each parsed variable represents and write the invariant beside the loop or recursive method.

Open hint 2

Hint 2 β€” Next step: Trace the smallest non-trivial input and write the structure state after the operation before coding the loop.

Open hint 3

Hint 3 β€” Verification: compare the structure state before and after one operation, then test the smallest valid input and a duplicate or unreachable case when allowed.

Constraints

Input contract: n followed by exactly n integers.

  • n is positive and is followed by exactly n signed integers.

Required technique: Insert into a HashSet and return the first value whose insertion reports that it was already present.

Output contract: Print the first repeated value, or NONE when no value repeats.

Use Java 8-compatible code only. Keep the public class names and Practice.solve(Scanner sc) signature from the starter files.

Input Format

n followed by exactly n integers.

Output Format

Print the first repeated value, or NONE when no value repeats.

Sample Testcases

Submit runs every public testcase in this browser. Results and code never leave this device.

Sample #1
Public sample
5 4 7 9 7 4
7
Visible walkthrough for the ordinary non-trivial path. The first value rejected by set insertion is the earliest value encountered for a second time. Input `5 4 7 9 7 4` therefore produces `7`.

Web terminal

C, C++, Java, and Python run locally in a browser VM. No worker or visualizer is used.

Saved in this browser
Editor settings