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[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].
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.
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.
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.
1 <= heights.length <= 100
1 <= heights[i] <= 100
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.
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).