高度检查器

作者: _阿南_ | 来源:发表于2020-02-26 11:54 被阅读0次

    题目:

    学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。
    请你返回能让所有学生以 非递减 高度排列的最小必要移动人数。
    示例:
    输入:heights = [1,1,4,2,1,3]
    输出:3
    提示:
    1 <= heights.length <= 100
    1 <= heights[i] <= 100
    

    题目的理解:

    看到这个理解,移动人数实现“非递减”排列,那么示例中移动4,2后就可以实现了,最小必要移动人数也就是2啊。为何是3呢。

    from typing import List
    class Solution:
        def heightChecker(self, heights: List[int]) -> int:
            index = len(heights)
            count = 0
    
            while index > 0:
                temp_list = heights[0:index]
    
                max_value = max(temp_list)
                temp_index = heights.index(max_value)
                if temp_index != index-1 and heights[index-1] != max_value:
                    count += 1
                    heights.remove(max_value)
                    heights.insert(index-1, max_value)
    
                index -= 1
    
            return count
    

    通过代码也可以实现移动2后就可以实现“非递减”排列。
    但是。。。
    题目想表达的意思是:“非递减”排列后与之前的差别,那么不同的数就是移动的人数

    python实现

    class Solution:
        def heightChecker(self, heights: List[int]) -> int:
            heights_sorted = sorted(heights)
            count = 0
            for i in range(len(heights)):
                if heights[i] != heights_sorted[i]:
                    count += 1
    
            return count
    

    提交

    成功

    出题的人没有将问题说清楚,那么好尴尬。

    // END 听着音乐写的代码,已经忘记了为何写代码

    相关文章

      网友评论

        本文标题:高度检查器

        本文链接:https://www.haomeiwen.com/subject/vikmchtx.html