Cho mảng nums các phần tử duy nhất. Mảng được gọi là đẹp nếu thỏa mãn:
- Các phần tử nằm trong khoảng 1 đến n (n là độ dài mảng).
- Mảng không được sắp xếp tăng dần.
Ví dụ: [2,6,1,5,3,4] → True.
Giải thuật
- Kiểm tra trùng lặp: nếu có phần tử bằng phần tử trước →
False. - Theo dõi xem mảng có sắp xếp tăng dần không (nếu có phần tử giảm thì
is_sorted = False). - Tính tổng các phần tử, so sánh với tổng 1..n (
n*(n+1)//2). - Trả về
Truenếu không sắp xếp tăng và tổng đúng.
Mã ví dụ
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)
nums = [2,6,1,5,3,4]
print(solve(nums))
Đầu vào
[2,6,1,5,3,4]
Đầu ra
True