Cho một mảng các số nguyên nums. Hãy trả về một mảng answer sao cho answer[i] đúng bằng tích của tất cả các phần tử trong nums ngoại trừ nums[i].
Yêu cầu bắt buộc: Bạn phải thiết kế thuật toán chạy trong thời gian O(n) và TUYỆT ĐỐI KHÔNG được sử dụng phép chia.
Ví dụ 1:
Input: nums = [1, 2, 3, 4]
Output: [24, 12, 8, 6]
Giải thích:
answer[0] = 2 * 3 * 4 = 24
answer[1] = 1 * 3 * 4 = 12
answer[2] = 1 * 2 * 4 = 8
answer[3] = 1 * 2 * 3 = 6
Ví dụ 2:
Input: nums = [-1, 1, 0, -3, 3]
Output: [0, 0, 9, 0, 0]
Định Dạng Đầu Vào (Input)
Định Dạng Đầu Ra (Output)
Ràng Buộc (Constraints)
2 <= nums.length <= 10^5-30 <= nums[i] <= 30
Ví Dụ Kiểm Thử Mẫu
[1, 2, 3, 4]
[24, 12, 8, 6]
[-1, 1, 0, -3, 3]
[0, 0, 9, 0, 0]
Kỹ thuật Tiền Tố (Prefix) & Hậu Tố (Suffix) O(n)
Mỗi phần tử answer[i] = (tích tất cả các số bên trái i) * (tích tất cả các số bên phải i).
Quét lượt 1 từ trái sang phải tính prefix product. Quét lượt 2 từ phải sang trái nhân dồn suffix product trực tiếp vào mảng kết quả.
Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.



