btvn.vn
Tìm kiếm Đăng nhập

Kiểm tra hoán vị mà không sắp dãy

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Độ dài n cùng các giá trị cần có

Một dãy `n ≥ 1` phần tử là hoán vị của 1 đến `n` khi mỗi giá trị 1, 2, …, `n` đều xuất hiện. Vì có đúng `n` chỗ và `n` giá trị khác nhau bắt buộc phải có, không còn chỗ cho một giá trị lặp hoặc ngoài khoảng. Ví dụ `[2, 3, 1]` có đủ 1, 2, 3; `[1, 1, 3]` thiếu 2. Đây là cách làm mịn theo từng giá trị cần kiểm, không cần sắp lại dữ liệu.

Dừng ngay khi gặp số bị thiếu

```python def la_hoan_vi_du_gia_tri(a): n = len(a) if n == 0: return False for x in range(1, n + 1): if x not in a: return False return True print(la_hoan_vi_du_gia_tri([2, 3, 1])) print(la_hoan_vi_du_gia_tri([1, 1, 3])) ``` Kết quả là `True` rồi `False`. Phép `x in a` phải tìm trong dãy ở mỗi lượt; với dãy dài `n`, cách này có thể xét tới khoảng `n²` phần tử trong trường hợp xấu. Với bài thực hành ngắn, cách viết dễ theo dõi; nếu dữ liệu lớn, có thể chọn cấu trúc kiểm tra nhanh hơn sau khi đã hiểu điều kiện đúng.

Bài luyện

Dãy `[1, 1, 3]` dài 3 không phải hoán vị vì thiếu giá trị nào?
Chọn một đáp án

Bài luyện

Vì sao kiểm từng số từ 1 đến n có trong dãy dài n là đủ để kết luận hoán vị?
Chọn một đáp án

Bài luyện

Với mã dùng `x in a` ở mỗi lượt, điều gì đúng khi n tăng?
Chọn một đáp án

Đang học