1051. Height Checker

Easy
​
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:
  • 1 <= heights.length <= 100
  • 1 <= heights[i] <= 100
​

解題

時間複雜度: log(n)
Runtime: 0 ms, faster than 100.00%
Memory Usage: 2.3 MB, less than 72.22%
func heightChecker(heights []int) int {
count := [100]int{0}
for _, val := range(heights) {
count[val-1]++
}
index := 0
ans := 0
for i:=0; i<100; i++ {
for count[i]>0 {
if heights[index]!=i+1 {
ans++
}
count[i]--
index++
}
}
return ans
}