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

Duyệt bộ ba liền nhau

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Kĩ thuật duyệt · Chọn bài khác

Hai điều kiện cần được kiểm cùng lúc

Bộ ba cần lấy từ các vị trí i,i+1,i+2 liền nhau. Ba giá trị phải tăng đều1 hoặc giảm đều1, chẳng hạn(2,3,4)hoặc(4,3,2). Không chọn ba phần tử cách nhau chỉ vì giá trị của chúng liên tiếp. Duyệt i từ 0 đến len(A)−3, tương ứng range(len(A)−2). Dịch i từng đơn vị để không bỏ các bộ có chung phần tử; dãy ngắn hơn 3 phần tử không có bộ ba để xét.

Giữ chỉ số đầu để nhận biết từng bộ

```python def consecutive_triples(A): result = [] for i in range(len(A) - 2): up = A[i + 1] == A[i] + 1 and A[i + 2] == A[i + 1] + 1 down = A[i + 1] == A[i] - 1 and A[i + 2] == A[i + 1] - 1 if up or down: result.append((i, (A[i], A[i + 1], A[i + 2]))) return result ``` Với A=[2,3,4,3,2,7,8,9], có ba bộ: chỉ số đầu 0 ứng với(2,3,4), đầu 2 ứng với(4,3,2), đầu 5 ứng với(7,8,9). Kết quả lưu cả chỉ số đầu và bộ giá trị. Chạy chế độ bo-ba với dãy trên để nhận số bộ3. Thử [1,2,3,4]: cần giữ cả(1,2,3)và(2,3,4), không nhảy i mỗi lần 3 vị trí sau khi tìm thấy một bộ. Thử dãy rỗng, hai phần tử, bộ bằng nhau và bộ đổi chiều ở giữa.

Bài luyện

Với [1,2,3,4], có bao nhiêu bộ ba cần nhận?
Chọn một đáp án

Bài luyện

Bộ ba(2,3,2)có thỏa điều kiện không?
Chọn một đáp án

Bài luyện

Vì sao phải tăng vị trí đầu mỗi lần 1 thay vì 3?
Chọn một đáp án

Đang học