50 JavaScript · 50 C#
Mỗi ngày một bài.
Giữ não luôn sắc.
Từ vòng lặp, chuỗi và mảng đến stack, đệ quy và dynamic programming cơ bản.
001 · Tổng các chữ số
Cho một số nguyên, tính tổng các chữ số của giá trị tuyệt đối của số đó.
vòng lặpJSDễ002 · Kiểm tra số nguyên tố
Xác định một số nguyên dương có phải là số nguyên tố hay không.
vòng lặpJSDễ003 · Đếm bội số trong đoạn
Đếm có bao nhiêu số nguyên trong đoạn đóng từ a đến b chia hết cho k.
vòng lặpJSDễ004 · Vẽ tam giác sao
Tạo tam giác vuông gồm n dòng sao, dòng thứ i có i ký tự sao.
vòng lặp lồng nhauJSDễ005 · Tính lũy thừa bằng vòng lặp
Tính a mũ b với a là số nguyên và b là số nguyên không âm, không dùng hàm lũy thừa có sẵn.
vòng lặpJSDễ006 · Đảo ngược chuỗi
Đảo ngược thứ tự các ký tự trong một chuỗi, giữ nguyên khoảng trắng và chữ hoa.
chuỗiJSDễ007 · Chuẩn hóa khoảng trắng
Xóa khoảng trắng ở đầu và cuối, đồng thời thay mọi dãy khoảng trắng bên trong bằng một dấu cách.
chuỗiJSDễ008 · Đếm nguyên âm
Đếm số nguyên âm Latin a, e, i, o, u trong chuỗi, không phân biệt chữ hoa chữ thường.
chuỗiJSDễ009 · Kiểm tra palindrome
Kiểm tra chuỗi có đọc xuôi và ngược giống nhau sau khi bỏ ký tự không phải chữ cái hoặc chữ số và bỏ qua hoa thường.
chuỗiJSTrung bình010 · Mã Caesar
Dịch mỗi chữ cái tiếng Anh trong văn bản đi k vị trí theo bảng chữ cái vòng tròn; giữ nguyên hoa thường và ký tự khác chữ cái.
chuỗiJSTrung bình011 · Ký tự xuất hiện nhiều nhất
Tìm ký tự có tần suất cao nhất trong chuỗi; nếu hòa, chọn ký tự xuất hiện sớm hơn.
mapJSTrung bình012 · Gom nhóm từ đồng nghĩa chữ
Gom các từ là hoán vị của cùng một tập ký tự vào một nhóm. Giữ thứ tự xuất hiện của nhóm và sắp xếp từ trong từng nhóm theo từ điển.
map và sắp xếpJSDễ013 · Bảng tần suất từ
Đếm số lần xuất hiện của mỗi từ và in các cặp theo thứ tự từ điển.
mapJSDễ014 · Loại phần tử trùng, giữ thứ tự
Loại bỏ các số trùng trong dãy nhưng giữ lần xuất hiện đầu tiên.
setJSDễ015 · Giao của hai dãy
Tìm các số xuất hiện ở cả hai dãy, bỏ trùng và giữ thứ tự xuất hiện trong dãy thứ nhất.
setJSDễ016 · Hợp của hai dãy số
Tạo hợp của hai dãy số, chỉ giữ một lần mỗi giá trị và sắp xếp tăng dần.
set và sắp xếpJSTrung bình017 · Sắp xếp theo khoảng cách
Sắp xếp các số theo khoảng cách tuyệt đối đến x tăng dần; nếu hòa, số nhỏ hơn đứng trước.
sắp xếpJSDễ018 · K phần tử lớn nhất phân biệt
Từ dãy số, lấy tối đa k giá trị khác nhau lớn nhất và in theo thứ tự giảm dần.
mảng và sắp xếpJSTrung bình019 · Trộn hai dãy đã sắp xếp
Trộn hai dãy số đã sắp xếp tăng dần thành một dãy tăng dần, không loại phần tử trùng.
hai con trỏJSTrung bình020 · Đoạn tăng liên tiếp dài nhất
Tìm độ dài lớn nhất của một đoạn liên tiếp tăng nghiêm ngặt trong dãy số.
mảngJSDễ021 · Phần tử lớn thứ hai
Tìm giá trị phân biệt lớn thứ hai trong dãy số; nếu không tồn tại, in NONE.
mảngJSDễ022 · Xoay mảng sang phải
Xoay dãy số sang phải k vị trí; các phần tử bị đẩy ra cuối sẽ quay về đầu.
mảngJSDễ023 · Tách số chẵn và lẻ
Đưa tất cả số chẵn lên trước rồi đến số lẻ, giữ nguyên thứ tự tương đối trong mỗi nhóm.
mảngJSTrung bình024 · Tích của các phần tử khác
Với mỗi vị trí, tính tích của mọi phần tử trong dãy ngoại trừ phần tử tại vị trí đó, không dùng phép chia.
prefix và suffixJSTrung bình025 · Tổng đoạn theo chỉ số
Tính tổng các phần tử từ chỉ số l đến r trong dãy, với chỉ số bắt đầu từ 0.
prefix sumJSDễ026 · Kiểm tra chuỗi ngoặc
Kiểm tra chuỗi chỉ gồm (), [], {} có đóng mở đúng thứ tự hay không.
ngăn xếpJSTrung bình027 · Khử cặp ký tự liền kề
Lặp lại thao tác xóa hai ký tự giống nhau đứng cạnh nhau cho đến khi không thể xóa thêm.
ngăn xếpJSTrung bình028 · Tính biểu thức hậu tố
Tính giá trị biểu thức hậu tố gồm số nguyên và các toán tử +, -, *, /. Phép chia lấy phần nguyên về 0.
ngăn xếpJSDễ029 · Mô phỏng hàng đợi phục vụ
Xử lý chuỗi lệnh enqueue:tên và serve; in các tên được phục vụ theo thứ tự. Lệnh serve trên hàng rỗng không làm gì.
hàng đợiJSTrung bình030 · Giá trị lớn nhất trong cửa sổ
Với mỗi cửa sổ liên tiếp dài k trong dãy, tìm phần tử lớn nhất.
hàng đợi đơn điệuJSDễ031 · Tổng từ 1 đến n bằng đệ quy
Tính 1 + 2 + ... + n bằng một hàm đệ quy với n không âm.
đệ quyJSTrung bình032 · Fibonacci có ghi nhớ
Tính số Fibonacci thứ n với F0 = 0 và F1 = 1, sử dụng kết quả đã tính để tránh lặp lại.
đệ quy và ghi nhớJSDễ033 · Đếm cách leo cầu thang
Có thể bước một hoặc hai bậc mỗi lần. Đếm số cách đi lên đúng n bậc.
quy hoạch độngJSTrung bình034 · Đổi tiền với ít đồng nhất
Tìm số đồng xu ít nhất để tạo đúng số tiền, mỗi mệnh giá được dùng không giới hạn. In -1 nếu không thể.
quy hoạch độngJSTrung bình035 · Tổng đoạn con lớn nhất
Tìm tổng lớn nhất của một đoạn con liên tiếp không rỗng trong dãy số.
mảng và quy hoạch độngJSTrung bình036 · Số đường đi trên lưới
Đếm số đường đi từ góc trên trái đến góc dưới phải của lưới, chỉ đi phải hoặc xuống và không đi qua ô bị chặn.
quy hoạch động trên lướiJSTrung bình037 · Đếm đảo trên lưới
Đếm số thành phần liên thông của các ô 1 trong lưới nhị phân, chỉ nối theo bốn hướng.
BFS và lướiJSDễ038 · Đảo ký tự từng từ
Giữ nguyên thứ tự các từ nhưng đảo ngược ký tự bên trong từng từ.
chuỗiJSTrung bình039 · So sánh phiên bản
So sánh hai chuỗi phiên bản gồm các nhóm số ngăn bởi dấu chấm. Các nhóm 0 ở cuối được xem như không tồn tại.
chuỗi và mảngJSDễ040 · Mã hóa theo độ dài
Mã hóa chuỗi bằng cách ghi mỗi ký tự theo sau là số lần lặp liên tiếp của ký tự đó.
chuỗiJSDễ041 · Giải mã theo độ dài
Giải mã chuỗi gồm các cặp một chữ cái theo sau là số đếm dương, bằng cách lặp chữ cái tương ứng.
chuỗiJSDễ042 · Khoảng cách Hamming
Đếm số vị trí khác nhau giữa hai chuỗi có cùng độ dài.
chuỗiJSTrung bình043 · Tìm cặp có tổng mục tiêu
Tìm hai chỉ số khác nhau có giá trị cộng lại bằng target; trả về cặp chỉ số đầu tiên theo thứ tự duyệt trái sang phải.
mapJSTrung bình044 · Phần tử có tần suất tối thiểu
In các giá trị xuất hiện ít nhất t lần trong dãy, mỗi giá trị một lần và theo thứ tự tăng dần.
mapJSDễ045 · Sắp xếp ba màu
Sắp xếp dãy chỉ gồm 0, 1 và 2 theo thứ tự tăng dần.
mảngJSTrung bình046 · Chọn nhiều cuộc hẹn nhất
Chọn nhiều khoảng thời gian không chồng lấn nhất. Một cuộc có thể bắt đầu đúng lúc cuộc trước kết thúc.
tham lam và khoảngJSTrung bình047 · Gộp các khoảng giao nhau
Gộp các khoảng có giao nhau hoặc chạm nhau thành những khoảng không giao nhau.
sắp xếp khoảngJSDễ048 · Định dạng hồ sơ người dùng
Mỗi bản ghi người dùng có dạng tên:tuổi. Hãy biến đổi thành dạng Tên (tuổi), giữ nguyên thứ tự.
biến đổi bản ghiJSTrung bình049 · Chọn học viên điểm cao
Từ các bản ghi tên:điểm, chọn học viên có điểm cao nhất; nếu hòa, chọn người xuất hiện trước.
biến đổi đối tượngJSTrung bình050 · Tính tổng giỏ hàng
Mỗi mặt hàng có dạng đơn_giá:số_lượng. Tính tổng tiền; giảm 10 phần trăm nếu tổng trước giảm giá từ 100 trở lên.
biến đổi đối tượngC#Dễ051 · Tổng số chẵn trong đoạn
Tính tổng các số chẵn trong đoạn nguyên đóng từ a đến b.
vòng lặpC#Dễ052 · Ước chung lớn nhất của dãy
Tìm ước chung lớn nhất của tất cả số nguyên trong dãy.
vòng lặp và số họcC#Trung bình053 · Kiểm tra số Armstrong
Kiểm tra số không âm có bằng tổng các chữ số của nó lũy thừa số lượng chữ số hay không.
số họcC#Dễ054 · Đổi nhị phân sang thập phân
Chuyển một chuỗi chỉ gồm 0 và 1 sang giá trị thập phân.
chuỗi và số họcC#Trung bình055 · Một hàng của tam giác Pascal
In hàng thứ n của tam giác Pascal, đánh số hàng từ 0.
mảng và vòng lặpC#Dễ056 · Đếm chữ hoa và chữ thường
Đếm số chữ cái viết hoa và viết thường trong một dòng văn bản; bỏ qua chữ số và ký tự đặc biệt.
chuỗiC#Dễ057 · Đảo từng từ trong câu
Giữ thứ tự các từ nhưng đảo ký tự trong từng từ, đồng thời chuẩn hóa khoảng trắng giữa các từ.
chuỗiC#Dễ058 · Kiểm tra từ không lặp chữ
Kiểm tra văn bản có phải isogram: không có chữ cái nào lặp lại, không phân biệt hoa thường; bỏ qua ký tự không phải chữ cái.
chuỗi và setC#Dễ059 · Thay thế từ khóa
Thay mọi lần xuất hiện của từ cũ bằng từ mới trong văn bản.
chuỗiC#Dễ060 · Viết tắt tên
Lấy chữ cái đầu của mỗi từ trong tên và ghép thành một chuỗi viết hoa.
chuỗiC#Dễ061 · Bảng tần suất số
Đếm số lần xuất hiện của mỗi số và in theo thứ tự tăng dần của giá trị.
dictionaryC#Trung bình062 · Top từ phổ biến
In tối đa k từ có tần suất cao nhất; nếu hòa, từ điển đứng trước được chọn trước.
dictionary và sắp xếpC#Dễ063 · Giao các nhãn
Tìm các nhãn xuất hiện trong cả hai tập nhãn, loại trùng và in theo thứ tự từ điển.
setC#Trung bình064 · Đếm cặp phần tử bằng nhau
Đếm số cặp chỉ số i < j có hai giá trị bằng nhau.
dictionaryC#Dễ065 · Hiệu của hai tập số
In các số thuộc tập A nhưng không thuộc tập B, mỗi số một lần theo thứ tự tăng dần.
setC#Trung bình066 · Sắp xếp theo số chữ số
Sắp xếp số nguyên theo số chữ số tăng dần; nếu bằng nhau, sắp xếp theo giá trị tăng dần.
sắp xếpC#Trung bình067 · Xếp học viên theo điểm
Sắp xếp các bản ghi tên:điểm theo điểm giảm dần; nếu hòa, giữ thứ tự ban đầu.
sắp xếp bản ghiC#Dễ068 · Trung vị của dãy
Tìm trung vị của dãy số. Với số phần tử chẵn, in trung bình của hai phần tử giữa với một chữ số thập phân.
sắp xếpC#Trung bình069 · Trộn nhiều dãy tăng
Trộn mọi số từ nhiều dãy đã sắp xếp tăng dần thành một dãy tăng dần.
sắp xếp và mảngC#Dễ070 · Chèn vào dãy tăng
Chèn một số mới vào dãy đã sắp xếp tăng dần và giữ thứ tự tăng.
mảngC#Dễ071 · Kiểm tra thời điểm rảnh
Kiểm tra một thời điểm t có nằm trong cuộc hẹn nào không. Khoảng [start, end) chiếm từ start đến trước end.
khoảng thời gianC#Trung bình072 · Cặp có tổng không vượt mức
Tìm tổng lớn nhất của hai phần tử khác vị trí nhưng không vượt quá giới hạn L. In -1 nếu không có cặp.
mảng và tham lamC#Trung bình073 · Mô phỏng ngăn xếp bằng lệnh
Xử lý các lệnh push:x, pop và top. In giá trị trả về của pop hoặc top theo thứ tự; lệnh trên stack rỗng trả về EMPTY.
ngăn xếpC#Trung bình074 · Trình soạn thảo có hoàn tác
Mô phỏng trình soạn thảo với lệnh add:text, backspace và undo. Undo khôi phục trạng thái trước chỉnh sửa gần nhất.
ngăn xếpC#Trung bình075 · Rút gọn đường dẫn Unix
Rút gọn đường dẫn tuyệt đối: dấu chấm là thư mục hiện tại, hai dấu chấm quay lại một thư mục, nhiều dấu gạch chéo được gộp.
ngăn xếp và chuỗiC#Trung bình076 · Mô phỏng hàng đợi Round Robin
Mỗi công việc có tên và thời gian còn lại. Phục vụ theo vòng tròn với quantum cố định; in tên theo thứ tự hoàn tất.
hàng đợiC#Trung bình077 · Đường đi ngắn nhất trên lưới
Tìm số bước ít nhất từ góc trên trái đến góc dưới phải trên lưới 0-1, chỉ đi bốn hướng qua ô 0; in -1 nếu không tới được.
BFS và lướiC#Dễ078 · Sinh các số nhị phân
Sinh biểu diễn nhị phân của các số từ 1 đến n theo thứ tự tăng dần.
hàng đợiC#Dễ079 · Đếm chữ số bằng đệ quy
Đếm số chữ số của một số nguyên bằng hàm đệ quy; số 0 có một chữ số.
đệ quyC#Dễ080 · Đảo chuỗi bằng đệ quy
Đảo ngược chuỗi bằng một hàm đệ quy, không dùng hàm đảo chuỗi có sẵn.
đệ quy và chuỗiC#Trung bình081 · Đếm tập con có tổng mục tiêu
Đếm số tập con của dãy số dương có tổng đúng bằng target; mỗi phần tử dùng tối đa một lần.
quy hoạch độngC#Trung bình082 · Đếm cách đổi tiền
Đếm số cách tạo số tiền bằng các mệnh giá không giới hạn, không phân biệt thứ tự các đồng.
quy hoạch độngC#Trung bình083 · Bài toán ba lô 0/1
Chọn mỗi món đồ tối đa một lần để tổng khối lượng không vượt sức chứa và tổng giá trị lớn nhất.
quy hoạch độngC#Trung bình084 · Độ dài dãy con chung dài nhất
Tìm độ dài dãy con chung dài nhất của hai chuỗi, không yêu cầu các ký tự liên tiếp.
quy hoạch động trên chuỗiC#Trung bình085 · Kiểm tra có thể ghép từ
Cho từ điển và một văn bản, xác định văn bản có thể tách hoàn toàn thành các từ trong từ điển hay không.
quy hoạch động trên chuỗiC#Trung bình086 · Diện tích đảo lớn nhất
Tìm diện tích lớn nhất của một thành phần ô 1 nối theo bốn hướng trong lưới nhị phân.
BFS và lướiC#Trung bình087 · Độ dài ngoặc hợp lệ dài nhất
Tìm độ dài đoạn liên tiếp dài nhất gồm các cặp ngoặc tròn hợp lệ.
ngăn xếpC#Trung bình088 · Phần tử lớn hơn kế tiếp
Với mỗi phần tử, tìm phần tử đầu tiên bên phải lớn hơn nó; in -1 nếu không có.
ngăn xếp đơn điệuC#Trung bình089 · Đoạn có tối đa k giá trị khác nhau
Tìm độ dài đoạn liên tiếp dài nhất chứa không quá k giá trị khác nhau.
cửa sổ trượtC#Dễ090 · Chuyển vị ma trận
Chuyển vị ma trận r hàng c cột: hàng thứ i của kết quả là cột thứ i của ma trận ban đầu.
ma trậnC#Trung bình091 · Duyệt ma trận hình xoắn ốc
Đọc các phần tử ma trận theo đường xoắn ốc bắt đầu từ góc trên trái và đi sang phải.
ma trậnC#Trung bình092 · Xoay ma trận 90 độ
Xoay ma trận vuông theo chiều kim đồng hồ 90 độ.
ma trậnC#Dễ093 · Xếp loại học viên
Mô hình hóa mỗi học viên bằng tên và điểm nguyên. Học viên đạt từ 50 trở lên có nhãn PASS, còn lại FAIL.
lập trình hướng đối tượngC#Trung bình094 · Tính giá trị kho hàng
Mỗi sản phẩm có tên, đơn giá và số lượng. Tính giá trị từng sản phẩm, sắp xếp giảm dần theo giá trị rồi theo tên.
lập trình hướng đối tượngC#Dễ095 · Thông tin hình chữ nhật
Tạo đối tượng hình chữ nhật từ chiều rộng và chiều cao, rồi tính diện tích và chu vi.
lập trình hướng đối tượngC#Trung bình096 · Mô phỏng tài khoản ngân hàng
Mô phỏng tài khoản với số dư ban đầu, lệnh deposit:x và withdraw:x. Bỏ qua lệnh rút vượt số dư.
lập trình hướng đối tượngC#Dễ097 · Danh sách phát nhạc
Mô hình hóa playlist bằng hàng đợi. Lệnh add:tên bài thêm bài, next phát bài đầu tiên; in các bài đã phát.
lập trình hướng đối tượng và hàng đợiC#Trung bình098 · Tính lương nhân viên
Mỗi nhân viên có tên, số giờ và đơn giá. Tính tổng lương của tất cả nhân viên.
lập trình hướng đối tượngC#Dễ099 · Báo cáo nhiệt độ
Tạo các đối tượng Temperature từ dãy Celsius rồi báo cáo nhiệt độ nhỏ nhất, lớn nhất và trung bình.
lập trình hướng đối tượng và mảngC#Trung bình100 · Tính phí trả sách
Mỗi sách có tên và số ngày mượn. Miễn phí trong 14 ngày, sau đó tính 2 đơn vị tiền cho mỗi ngày quá hạn.
lập trình hướng đối tượng