ปัญหา
อาร์เรย์ nums (ค่าทั้งหมดไม่ซ้ำ) เป็น "Beautiful" ถ้า:
- สมาชิกอยู่ในช่วง 1 ถึง n (n = ความยาวอาร์เรย์)
- อาร์เรย์ ไม่ได้ เรียงจากน้อยไปมาก
ตัวอย่าง
nums = [2,6,1,5,3,4] → มีค่า 1-6 ครบ ไม่เรียงลำดับ → True
แนวคิดการแก้ปัญหา
- คำนวณผลรวมของอาร์เรย์
- ตรวจสอบว่ามีค่าซ้ำหรือไม่
- ตรวจสอบว่าเรียงลำดับหรือไม่
- ผลรวมต้องเท่ากับ 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