[LeetCode] Height Checker

1051. Height Checker

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].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int heightChecker(vector<int>& heights) {
int res = 0;
unordered_map<int, int> counter;
for(auto n : heights) {
counter[n]++;
}
for(int i = 1, j = 0; i <= 100 and j < heights.size(); j++) {
while(i < 100 and (!counter.count(i) or counter[i] == 0)) i++;
if(i == heights[j]) res++;
counter[i]--;
}
return heights.size() - res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/03/12/PS/LeetCode/height-checker/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.