Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm danh sách tích của tất cả phần tử trừ chỉ số hiện tại bằng Python


Cho danh sách nums, tạo danh sách mới mà phần tử tại chỉ số i là tích của tất cả số trong danh sách gốc trừ số tại i. Không dùng phép chia.

Ví dụ: [2, 3, 4, 5, 6] → [360, 240, 180, 144, 120].

Quy trình giải quyết (Prefix/Suffix Product)

  1. Tạo mảng left lưu tích các phần tử bên trái.
  2. Tạo mảng right lưu tích các phần tử bên phải.
  3. Kết quả tại i là left[i] * right[i].

Ví dụ mã nguồn

class Solution:
    def solve(self, nums):
        if len(nums) < 1:
            return nums
        l = len(nums)
        left = [None] * l
        right = [None] * l
        temp = 1
        for i in range(len(nums)):
            if i == 0:
                left[i] = temp
            else:
                temp = temp * nums[i - 1]
                left[i] = temp
        temp = 1
        for i in range(len(nums) - 1, -1, -1):
            if i == len(nums) - 1:
                right[i] = temp
            else:
                temp = temp * nums[i + 1]
                right[i] = temp
        for i in range(len(nums)):
            left[i] = left[i] * right[i]
        return left

ob = Solution()
nums = [2, 3, 4, 5, 6]
print(ob.solve(nums))  # Output: [360, 240, 180, 144, 120]

Đầu vào

[2, 3, 4, 5, 6]

Đầu ra

[360, 240, 180, 144, 120]