All challenges
Easy 0 solved 0% acceptance

Min-Max Normalization

Rescale a feature so its smallest value becomes 0 and its largest becomes 1.

What you'll learn

  • Rescale values to the 0-1 range
  • Handle a feature where all values are equal
  • Prepare data for training

Problem

Features measured on different scales (age in years, income in dollars) confuse many models. Min-max normalization rescales a feature to the range 0 to 1:

x' = (x - min) / (max - min)

If all values are equal (max = min), return 0 for every value.

Implement min_max_normalize(values).

Input

values: The values of one feature.

Output

Return the normalized values in the same order.

Constraints

1 ≤ length ≤ 10,000

-1,000,000 ≤ each value ≤ 1,000,000

Examples

Example 1
Input:
values = [10.0, 20.0, 15.0, 30.0]

Expected output:
expected = [0.0, 0.5, 0.25, 1.0]
Input:
std::vector<double> values = {10.0, 20.0, 15.0, 30.0};

Expected output:
std::vector<double> expected = {0.0, 0.5, 0.25, 1.0};
Input:
double[] values = new double[] {10.0, 20.0, 15.0, 30.0};

Expected output:
double[] expected = new double[] {0.0, 0.5, 0.25, 1.0};

Explanation

min = 10 and max = 30, so the range is 20: (10 - 10) / 20 = 0, (20 - 10) / 20 = 0.5, (15 - 10) / 20 = 0.25 and (30 - 10) / 20 = 1.

Example 2
Input:
values = [5.0, 5.0, 5.0]

Expected output:
expected = [0.0, 0.0, 0.0]
Input:
std::vector<double> values = {5.0, 5.0, 5.0};

Expected output:
std::vector<double> expected = {0.0, 0.0, 0.0};
Input:
double[] values = new double[] {5.0, 5.0, 5.0};

Expected output:
double[] expected = new double[] {0.0, 0.0, 0.0};

Explanation

All values are equal, so the range is 0 and every value becomes 0.

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

First find the smallest and largest values, since every normalized result depends on the feature’s spread.

Hint 2

Compute each output from its position relative to the minimum, using one pass to build the results after scanning extremes.

Hint 3

If every value is identical, avoid dividing by zero and return zeros for all positions.

Expected complexity

O(n) time, O(1) extra space

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.