Luyện tập về mảng 1 chiều
Tìm kiếm phần tử xuất hiện đầu tiên
Nộp bàiPoint: 1
Cho một mảng A nguyên gồm N phần tử đã sắp xếp tăng dần, hãy tìm chỉ số của phần tử xuất hiện đầu tiên trong mảng, ví dụ mảng 1, 3, 4, 5, 5, 5, 6, 7. Nếu tìm số 5 thì số 5 xuất hiện đầu tiên sẽ có chỉ số 3, chỉ số này được in ra. Nếu không tìm thấy thì in ra -1
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 < A[i] \leq 10^6~
Input 01:
8 5
1 3 4 5 5 5 6 7
Output 01:
3
Input 02:
7 -3
-3 -3 -1 4 5 6 7
Output 02:
0
Input 03:
6 10
1 3 4 5 6 7
Output 03:
-1
Đếm số lần xuất hiện (tìm kiếm tuyến tính)
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử và số nguyên K. Hãy đếm xem số K xuất hiện bao nhiêu lần trong dãy A.
Dữ liệu vào:
Dòng 1: Hai số nguyên N và K.
Dòng 2: N số nguyên A1, A2, ..., AN.
Dữ liệu ra: Số lượng phần tử có giá trị bằng K.
Ràng buộc: 1 <= N <= 10^6; |Ai|, |K| <= 10^9.
Ví dụ 1:
Input:
6 5
5 1 5 2 5 3
Output:
3
Ví dụ 2:
Input:
5 100
1 2 3 4 5
Output:
0
Số X gần nhất
Nộp bàiPoint: 1
Cho dãy số thực A gồm N phần tử và một số thực X. Hãy tìm phần tử trong mảng có giá trị gần với X nhất (trị tuyệt đối của hiệu số là nhỏ nhất). Nếu có nhiều số, in ra số xuất hiện đầu tiên.
Dữ liệu vào:
Dòng 1: Số nguyên N và số thực X.
Dòng 2: N số thực A1, A2, ..., AN.
Dữ liệu ra: Giá trị của phần tử gần X nhất. Làm tròn không lấy chữ số nào sau phần thập phân.
Ràng buộc: 1 <= N <= 10^6; -10^9 <= Ai, X <= 10^9.
Ví dụ 1:
Input:
5 3.5
1.0 2.0 5.0 4.0 3.0
Output:
4
Ví dụ 2:
Input:
4 10.0
1.0 20.0 15.0 5.0
Output:
15
Tìm kiếm trong đoạn (tìm kiếm tuyến tính)
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử và Q truy vấn. Mỗi truy vấn gồm 3 số L, R, X. Hãy kiểm tra xem số X có xuất hiện trong đoạn từ chỉ số L đến chỉ số R của mảng hay không.
Dữ liệu vào:
Dòng 1: Hai số N và Q.
Dòng 2: N số nguyên A1, A2, ..., AN.
Q dòng tiếp theo: Mỗi dòng gồm 3 số L, R, X.
Dữ liệu ra: Với mỗi truy vấn, in ra "YES" nếu tìm thấy, "NO" nếu không.
Ràng buộc: 1 <= N, Q <= 1000; 1 <= L <= R <= N; |Ai|, |X| <= 10^9. (Lưu ý: N nhỏ để chấp nhận độ phức tạp O(N*Q)).
Ví dụ 1:
Input:
5 2
1 2 3 4 5
1 3 2
3 5 1
Output:
YES
NO
Ví dụ 2:
Input:
4 1
10 20 30 40
2 3 40
Output:
NO
Vị trí đầu tiên lớn hơn hoặc bằng X
Nộp bàiPoint: 1
Cho mảng A gồm N phần tử. Sử dụng hàm có sẵn tìm vị trí đầu tiên của phần tử lớn hơn hoặc bằng X.
Dòng đầu tiên nhập N và X
Dòng tiếp theo nhập N giá trị của mảng A
In ra vị trí nếu tìm thấy, nếu không tìm thấy thì in ra N.
Ràng buộc: ~0 < N \leq 10^6~; ~0 \leq A[i] \leq 10^9~
Input 01:
10 6
3 5 6 6 6 6 9 10 11 13
Output 01:
2
Vị trí đầu tiên trong mảng lớn hơn hoặc bằng 6 là vị trí có chỉ số là 2 (có giá trị là 6)
Input 02:
10 14
3 5 6 6 6 6 9 10 11 13
Output 02:
10
Sắp xếp mảng cơ bản
Nộp bàiPoint: 1
Cho một mảng A gồm N số nguyên. Hãy sắp xếp nửa đầu của mảng theo thứ tự tăng dần, và nửa sau của mảng theo thứ tự giảm dần. Nếu N lẻ, phần tử ở giữa thuộc về nửa đầu.
Đầu vào:
Dòng 1: Số nguyên N (2 <= N <= 1000).
Dòng 2: N số nguyên A[i] (-10^4 <= A[i] <= 10^4).
Đầu ra: Mảng sau khi đã được sắp xếp theo yêu cầu, các số cách nhau một khoảng trắng.
Input:
6
5 2 9 1 8 3
Output:
2 5 9 8 3 1
Chèn phần tử vào mảng
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy chèn một số nguyên X vào vị trí K trong mảng (vị trí K tính từ 1). Các phần tử từ vị trí K trở đi sẽ bị dịch sang phải một vị trí.
Đầu vào:
Dòng 1: Ba số nguyên N, X và K (1 <= N <= 1000; -10^4 <= X <= 10^4; 1 <= K <= N + 1).
Dòng 2: N số nguyên A[i].
Đầu ra: Mảng sau khi đã chèn phần tử X.
Input:
5 99 3
10 20 30 40 50
Output:
10 20 99 30 40 50
Xóa phần tử trong mảng
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy xóa phần tử tại vị trí K trong mảng (vị trí K tính từ 1) và dồn các phần tử phía sau lên trước.
Đầu vào:
Dòng 1: Hai số nguyên N và K (2 <= N <= 1000; 1 <= K <= N).
Dòng 2: N số nguyên A[i].
Đầu ra: Mảng sau khi đã xóa phần tử tại vị trí K.
Input:
5 2
10 20 30 40 50
Output:
10 30 40 50
Tách mảng chẵn lẻ
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy tách mảng A thành 2 mảng: mảng B chứa các số chẵn và mảng C chứa các số lẻ. Vẫn giữ nguyên thứ tự xuất hiện ban đầu của các số.
Đầu vào:
Dòng 1: Số nguyên N (1 <= N <= 1000).
Dòng 2: N số nguyên A[i] (1 <= A[i] <= 10^4). Đầu ra: - Dòng 1: Các phần tử của mảng B (các số chẵn). Nếu không có in ra "KHOANG TRANG".
Dòng 2: Các phần tử của mảng C (các số lẻ). Nếu không có in ra "KHOANG TRANG".
Input:
6
1 4 2 5 9 8
Output:
4 2 8
1 5 9
Dịch mảng 1 vị trí
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy dịch toàn bộ các phần tử của mảng sang TRÁI 1 vị trí. Phần tử ở vị trí đầu tiên (A[1]) sẽ được đưa xuống cuối mảng.
Đầu vào:
Dòng 1: Số nguyên N (2 <= N <= 1000).
Dòng 2: N số nguyên A[i].
Đầu ra: Mảng sau khi dịch trái 1 vị trí.
Input:
5
10 20 30 40 50
Output:
20 30 40 50 10
Đoạn con tăng liên tiếp dài nhất
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy tìm chiều dài của đoạn con gồm các phần tử liên tiếp tăng dần dài nhất trong mảng. Đầu vào:
Dòng 1: Số nguyên N (1 <= N <= 1000).
Dòng 2: N số nguyên A[i] (-10^4 <= A[i] <= 10^4).
Đầu ra: Một số nguyên là độ dài của đoạn con tăng liên tiếp dài nhất.
Input:
7
1 2 1 3 4 5 2
Output:
4
(Giải thích: Đoạn con [1, 3, 4, 5] tăng dần và có chiều dài là 4).
Lọc các phần tử trùng lặp
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy xóa tất cả các phần tử trùng lặp trong mảng, chỉ giữ lại sự xuất hiện đầu tiên của mỗi giá trị.
Đầu vào:
Dòng 1: Số nguyên N (1 <= N <= 1000).
Dòng 2: N số nguyên A[i] (-10^4 <= A[i] <= 10^4).
Đầu ra: Mảng sau khi đã lọc bỏ các phần tử trùng lặp, giữ nguyên thứ tự xuất hiện ban đầu.
Input:
8
2 5 2 8 5 9 2 1
Output:
2 5 8 9 1
Tìm các chỉ số xuất hiện đúng 1 lần
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên. Hãy liệt kê các số chỉ xuất hiện đúng 1 lần duy nhất trong mảng theo thứ tự xuất hiện của chúng.
Đầu vào:
Dòng 1: Số nguyên N (1 <= N <= 1000).
Dòng 2: N số nguyên A[i] (0 <= A[i] <= 10^4).
Đầu ra: Các phần tử chỉ xuất hiện 1 lần. Nếu không có phần tử nào thỏa mãn, in ra -1.
Input:
7
10 20 10 30 40 20 50
Output:
30 40 50
Thống kê tần số xuất hiện
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên có giá trị nằm trong khoảng từ 0 đến 1000. Hãy đếm xem mỗi số trong mảng xuất hiện bao nhiêu lần và in ra kết quả. Chỉ in những số có xuất hiện trong mảng, theo thứ tự giá trị tăng dần.
Đầu vào:
Dòng 1: Số nguyên N (1 <= N <= 1000).
Dòng 2: N số nguyên A[i] (0 <= A[i] <= 1000).
Đầu ra: Gồm nhiều dòng, mỗi dòng ghi 2 số cách nhau một khoảng trắng: Giá trị của phần tử và Số lần xuất hiện.
Input:
6
5 2 2 9 5 2
Output:
2 3
5 2
9 1
Tổng nằm giữa Min và Max
Nộp bàiPoint: 1
Cho mảng A gồm N số nguyên phân biệt (các số trong mảng đôi một khác nhau). Hãy tính tổng các phần tử nằm giữa vị trí của số nhỏ nhất (Min) và số lớn nhất (Max) trong mảng. Chú ý: Không tính số Min và số Max vào tổng này.
Đầu vào:
Dòng 1: Số nguyên N (3 <= N <= 1000).
Dòng 2: N số nguyên phân biệt A[i] (-10^4 <= A[i] <= 10^4).
Đầu ra: Tổng các phần tử nằm giữa Min và Max.
Input:
7
15 2 4 9 6 20 8
Output:
19
(Giải thích: Số nhỏ nhất là 2 (vị trí 2), số lớn nhất là 20 (vị trí 6). Các phần tử nằm giữa là 4, 9, 6. Tổng = 4 + 9 + 6 = 19).