Description
https://leetcode.com/problems/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]
.
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
Explanation
Sort the list to get the expected list order. Iterate the list and compare the list element with the element in the expected list, if not matched, add the unmatched count.
Python Solution
class Solution:
def heightChecker(self, heights: List[int]) -> int:
expected = sorted(heights)
count = 0
for i, (height, expect) in enumerate(zip(heights, expected)):
if height != expect:
count += 1
return count
- Time Complexity: O(N).
- Space Complexity: O(1).