152. Maximum Product Subarray
June 24, 2025
04:32 AM
No headings found
Loading content...
No headings found
Problem
Bài toán yêu cầu tìm tích lớn nhất của một dãy con liên tiếp một dãy con liên tiếp trong mảng số nguyên. Điểm khó là mảng có thể chứa số âm và số 0, nên không thể chỉ dùng tích liên tục như bài Maximum Subarray (tổng lớn nhất).
Approach
Solution
1function maxProduct(nums: number[]): number {
2 let maxProd = nums[0];
3 let minProd = nums[0];
4 let ans = nums[0];
5 for(let i = 1; i < nums.length; i++) {
6 const temp_max = maxProd;
7 const temp_min = minProd;
8
9 maxProd = Math.max(nums[i], temp_max * nums[i], temp_min * nums[i]);
10 minProd = Math.min(nums[i], temp_max * nums[i], temp_min * nums[i]);
11 ans = Math.max(ans, maxProd)
12 }
13
14 return ans;
15};