1051. Height Checker

개굴·2024년 5월 24일

leetcode

목록 보기
9/51
  • python3

Problem

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

Pseudocode

First Solution

  1. I thought it wouldn't have space disadvantages.
  2. Make a copy of the sorted array.
  3. Compare the sorted array with the original array.
  4. Check if any two elements are different.

-> This method passed, but its performance is poor in terms of time efficiency.

Code

First Solution

class Solution:
    def heightChecker(self, heights: List[int]) -> int:

        copyHeights = sorted(heights)
        result = 0

        for i in range(0, len(heights)):
            if copyHeights[i] != heights[i]:
                result += 1

        return result

Result

First Solution

  • Time Complexity : O(n log n) as we have to sort array once by sorted method.
  • Space Complexity : O(n) to compare two arrays.

Review

  • It passed becaust the constraints weren't strict. However next time it needs to be more efficent in terms of both time and space complexity.
profile
알쏭달쏭혀요

0개의 댓글