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

Đếm số lần xuất hiện cho từng vị trí

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

Một giá trị lặp cho các vị trí cùng kết quả

Đầu vào là dãy `a`; đầu ra là dãy `b` có cùng độ dài, với `b[k]` bằng **số lần giá trị `a[k]` xuất hiện trong cả dãy `a`**. Nếu `a = [4, 2, 4, 7, 2]`, số 4 xuất hiện hai lần, số 2 hai lần và số 7 một lần, nên `b = [2, 2, 2, 1, 2]`. Mỗi vị trí của cùng một giá trị nhận cùng số đếm. Đây là đếm trong toàn bộ dãy, không phải chỉ các lần đứng trước vị trí đang xét.

Tách phép đếm thành hàm nhỏ

```python def so_lan(x, a): dem = 0 for v in a: if v == x: dem += 1 return dem def dem_theo_vi_tri(a): b = [] for x in a: b.append(so_lan(x, a)) return b print(dem_theo_vi_tri([4, 2, 4, 7, 2])) ``` Kết quả là `[2, 2, 2, 1, 2]`. Nếu `a=[]` thì vòng ngoài không chạy và kết quả là `[]`. Vòng ngoài có `n` lượt, mỗi lần hàm `so_lan` xem `n` phần tử, nên trường hợp này có bậc `O(n²)`. Phân tách hàm giúp thấy rõ bước con “đếm một giá trị” trong thiết kế làm mịn dần.

Bài luyện

Với `a = [5, 1, 5, 5]`, dãy số lần xuất hiện theo vị trí là gì?
Chọn một đáp án

Bài luyện

`dem_theo_vi_tri([])` trả gì?
Chọn một đáp án

Bài luyện

Trong mã bài học, `b[k]` đếm số lần xuất hiện của giá trị nào?
Chọn một đáp án

Đang học