The Indian Engineer

Problem 1051 Height Checker

Posted on 2 mins

Vectors Sorting

Problem Statement

Link - Problem 1051

Question

A school is trying to take an annual photo of all the students. The students are asked to stand in a single file line in non-decreasing order by height. Let this ordering be represented by the integer array expected where expected[i] is the expected height of the ith student in line.

You are given an integer array heights representing the current order that the students are standing in. Each heights[i] is the height of the ith student in line (0-indexed).

Return the number of indices where heights[i] != expected[i].

Example 1

Input: heights = [1,1,4,2,1,3]
Output: 3
Explanation:
heights:  [1,1,4,2,1,3]
expected: [1,1,1,2,3,4]
Indices 2, 4, and 5 do not match.

Example 2

Input: heights = [5,1,2,3,4]
Output: 5
Explanation:
heights:  [5,1,2,3,4]
expected: [1,2,3,4,5]
All indices do not match.

Example 3

Input: heights = [1,2,3,4,5]
Output: 0
Explanation:
heights:  [1,2,3,4,5]
expected: [1,2,3,4,5]
All indices match.

Constraints

Solution

class Solution {
public:
    int heightChecker(vector<int>& heights) {
        vector<int> ans;
        for(auto i : heights)
            ans.push_back(i);
        sort(ans.begin(), ans.end());
        int count = 0;
        for(int i = 0 ; i < heights.size() ; i ++)
            if(heights[i] != ans[i])
                count++;
        return count;
    }
};

Complexity Analysis

Explanation

1. Intuition

- We need to have a copy of the original array.
- Sort the copy.
- Compare the original array with the sorted array.
- Count the number of mismatches.

2. Implementation

- Create a copy of the `heights` array and name it `expected`.
- Sort the `expected` array.
- Compare the `heights` array with the `expected` array.
- Count the number of mismatches.
- Return the count.