Product_of_array_expect_self - stachulemko/doc GitHub Wiki

Product_of_array_expect_self

podstawowa = |1|2|3|4|
num1 = |1|2|6|24|
num2 = |24|24|12|4|
podstawowa[1]:
    wynik =num1[1-1]*num1[1+1]
    wynik=1*12
from typing import List

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        answer = []
        
        if len(nums) == 2:
            # Jeśli jest tylko 2 elementy, zwracamy odwróconą tablicę
            return [nums[1], nums[0]]
        
        tab1 = []
        licznik1 = 1
        tab2 = []
        licznik2 = 1

        # Tworzenie tablicy iloczynów z przodu
        for i in nums:
            licznik1 *= i
            tab1.append(licznik1)

        # Tworzenie tablicy iloczynów od tyłu
        for i in reversed(nums):
            licznik2 *= i
            tab2.append(licznik2)

        # Odwracamy tab2, aby miała tę samą kolejność co nums
        tab2.reverse()
        
        # Tworzenie odpowiedzi
        for i in range(len(nums)):
            if i - 1 < 0:  # dla pierwszego elementu
                answer.append(1 * tab2[i + 1])  # tab2[i + 1] istnieje
            elif i + 1 >= len(nums):  # dla ostatniego elementu
                answer.append(1 * tab1[i - 1])  # tab1[i - 1] istnieje
            else:  # dla pozostałych elementów
                answer.append(tab1[i - 1] * tab2[i + 1])

        return answer