นักเรียนนั่งถ่ายรูปต้องเรียงตามส่วนสูงไม่ลดลง (non-decreasing) ให้อาร์เรย์ความสูง หาจำนวนนักเรียนที่ไม่อยู่ตำแหน่งที่ถูกต้อง
ตัวอย่าง: [1,1,4,2,1,3] เรียงแล้ว [1,1,1,2,3,4] ตำแหน่งผิด 3 ที่ (4, 3, 1 ตัวสุดท้าย)
ขั้นตอนการแก้ปัญหา
- สร้างอาร์เรย์เรียงลำดับ
x = sorted(heights) - เปรียบเทียบ
x[i]กับheights[i]ทุก i - นับจำนวนที่ไม่เท่ากัน
ตัวอย่างโค้ด
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)))