Menu
CoddyTech

Maximum Product Subarray

Trung bìnhQuy hoạch độngpython iconjava iconcpp iconc iconjs icon+10

Nhân các phần tử trong một mảng con của nums với nhau, rồi trả về tích lớn nhất mà bất kỳ mảng con nào có thể tạo ra. Mảng con gồm các phần tử liên tiếp, không có khoảng trống và không bao giờ rỗng, vì vậy ngay cả một mảng chỉ có số âm cũng có đáp án. Có thể có các giá trị bằng 0 và giá trị âm.

Hàm

maxProduct(nums: integer-array) → integer
numsinteger-array
các số nguyên cần nhân với nhau, mỗi số nằm trong khoảng từ -10 đến 10
Trả vềinteger
tích lớn nhất của một mảng con không rỗng

Ràng buộc

  • 1 ≤ nums.length ≤ 2 × 104
  • -10 ≤ nums[i] ≤ 10
  • Tích của mọi mảng con nằm trong phạm vi số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
nums = [2, -5, 3, -2, 0, 4]
Đầu ra
60
Giải thích
Hai số âm triệt tiêu lẫn nhau: 2 × -5 × 3 × -2 = 60. Số 0 chia mảng thành hai phần, còn số 4 ở phía bên kia không thể lớn hơn 60.
challenge icon

Câu hỏi mở rộng

Bạn sẽ báo thêm vị trí bắt đầu và kết thúc của mảng con tốt nhất như thế nào, vẫn trong thời gian O(n) và không gian O(1)?

Đặt lại code
def maxProduct(nums):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [2, -5, 3, -2, 0, 4]

Đầu ra mong đợi

60