Welcome to Subscribe On Youtube
1051. Height Checker
Description
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 <= 1001 <= heights[i] <= 100
Solutions
-
class Solution { public int heightChecker(int[] heights) { int[] expected = heights.clone(); Arrays.sort(expected); int ans = 0; for (int i = 0; i < heights.length; ++i) { if (heights[i] != expected[i]) { ++ans; } } return ans; } } -
class Solution { public: int heightChecker(vector<int>& heights) { vector<int> expected = heights; sort(expected.begin(), expected.end()); int ans = 0; for (int i = 0; i < heights.size(); ++i) ans += heights[i] != expected[i]; return ans; } }; -
class Solution: def heightChecker(self, heights: List[int]) -> int: expected = sorted(heights) return sum(a != b for a, b in zip(heights, expected)) -
func heightChecker(heights []int) int { expected := make([]int, len(heights)) copy(expected, heights) sort.Ints(expected) ans := 0 for i, v := range heights { if v != expected[i] { ans++ } } return ans } -
function heightChecker(heights: number[]): number { const expected = [...heights].sort((a, b) => a - b); return heights.reduce((acc, cur, i) => acc + (cur !== expected[i] ? 1 : 0), 0); } -
class Solution { public int heightChecker(int[] heights) { int[] cnt = new int[101]; for (int h : heights) { ++cnt[h]; } int ans = 0; for (int i = 0, j = 0; i < 101; ++i) { while (cnt[i] > 0) { --cnt[i]; if (heights[j++] != i) { ++ans; } } } return ans; } } -
class Solution { public: int heightChecker(vector<int>& heights) { vector<int> cnt(101); for (int& h : heights) ++cnt[h]; int ans = 0; for (int i = 0, j = 0; i < 101; ++i) { while (cnt[i]) { --cnt[i]; if (heights[j++] != i) ++ans; } } return ans; } }; -
class Solution: def heightChecker(self, heights: List[int]) -> int: cnt = [0] * 101 for h in heights: cnt[h] += 1 ans = i = 0 for j in range(1, 101): while cnt[j]: cnt[j] -= 1 if heights[i] != j: ans += 1 i += 1 return ans -
func heightChecker(heights []int) int { cnt := make([]int, 101) for _, h := range heights { cnt[h]++ } ans := 0 for i, j := 0, 0; i < 101; i++ { for cnt[i] > 0 { cnt[i]-- if heights[j] != i { ans++ } j++ } } return ans } -
function heightChecker(heights: number[]): number { const cnt = Array(101).fill(0); for (const i of heights) { cnt[i]++; } let ans = 0; for (let j = 1, i = 0; j < 101; j++) { while (cnt[j]--) { if (heights[i++] !== j) { ans++; } } } return ans; }