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

ตรวจสอบว่าอาร์เรย์เป็น "Beautiful" หรือไม่ ใน Python


ปัญหา

อาร์เรย์ nums (ค่าทั้งหมดไม่ซ้ำ) เป็น "Beautiful" ถ้า:

  1. สมาชิกอยู่ในช่วง 1 ถึง n (n = ความยาวอาร์เรย์)
  2. อาร์เรย์ ไม่ได้ เรียงจากน้อยไปมาก

ตัวอย่าง

nums = [2,6,1,5,3,4] → มีค่า 1-6 ครบ ไม่เรียงลำดับ → True

แนวคิดการแก้ปัญหา

  1. คำนวณผลรวมของอาร์เรย์
  2. ตรวจสอบว่ามีค่าซ้ำหรือไม่
  3. ตรวจสอบว่าเรียงลำดับหรือไม่
  4. ผลรวมต้องเท่ากับ n(n+1)/2 (ผลรวม 1 ถึง n)

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

def solve(nums):
    n = len(nums)
    total = nums[0]
    is_sorted = True
    for i in range(1, n):
        if nums[i] == nums[i-1]:
            return False
        if nums[i] < nums[i-1]:
            is_sorted = False
        total += nums[i]
    if is_sorted:
        return False
    return total == n * (n + 1) // 2

print(solve([2, 6, 1, 5, 3, 4]))  # True

อินพุต / เอาต์พุต

Input:  [2,6,1,5,3,4]
Output: True