Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Height Checker ใน Python


นักเรียนนั่งถ่ายรูปต้องเรียงตามส่วนสูงไม่ลดลง (non-decreasing) ให้อาร์เรย์ความสูง หาจำนวนนักเรียนที่ไม่อยู่ตำแหน่งที่ถูกต้อง

ตัวอย่าง: [1,1,4,2,1,3] เรียงแล้ว [1,1,1,2,3,4] ตำแหน่งผิด 3 ที่ (4, 3, 1 ตัวสุดท้าย)

ขั้นตอนการแก้ปัญหา

  1. สร้างอาร์เรย์เรียงลำดับ x = sorted(heights)
  2. เปรียบเทียบ x[i] กับ heights[i] ทุก i
  3. นับจำนวนที่ไม่เท่ากัน

ตัวอย่างโค้ด

class Solution(object):
    def heightChecker(self, heights):
        ans = 0
        x = sorted(heights)
        y = heights
        for i in range(len(x)):
            if x[i] != y[i]:
                ans += 1
        return ans

ob1 = Solution()
print(ob1.heightChecker([1,2,4,2,1,3]))

อินพุต

[1,1,4,2,1,3]

เอาต์พุต

4

หมายเหตุ: ตัวอย่างในโค้ดใช้ [1,2,4,2,1,3] ได้ 4 ตัวอย่างในข้อความใช้ [1,1,4,2,1,3] ได้ 3 ตัว

วิธีแก้แบบ Pythonic

def heightChecker(heights):
    return sum(h != s for h, s in zip(heights, sorted(heights)))