Computer >> Máy Tính >  >> Lập trình >> Python

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

Giả sử chúng ta có một danh sách các số được gọi là num, chúng ta phải tìm một danh sách mới sao cho mỗi phần tử ở chỉ mục i của danh sách mới được tạo là tích của tất cả các số trong danh sách ban đầu trừ một phần tử ở chỉ mục i. Ở đây chúng ta phải giải quyết nó mà không sử dụng phép chia.

Vì vậy, nếu đầu vào là nums =[2, 3, 4, 5, 6], thì đầu ra sẽ là [360, 240, 180, 144, 120]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu kích thước của nums <1, thì
    • trả về số
  • l:=kích thước của nums
  • left:=danh sách kích thước l và ban đầu tất cả các giá trị đều rỗng
  • right:=một danh sách có kích thước l và ban đầu tất cả các giá trị đều rỗng
  • tạm thời:=1
  • đối với tôi trong phạm vi từ 0 đến kích thước của nums, hãy thực hiện
    • nếu tôi giống 0, thì
      • left [i]:=temp
    • nếu không,
      • temp:=temp * nums [i - 1]
      • left [i]:=temp
  • tạm thời:=1
  • đối với tôi trong phạm vi kích thước nums - 1 đến 0, giảm 1, thực hiện
    • nếu tôi giống với kích thước của nums - 1, thì
      • right [i]:=temp
    • nếu không,
      • temp:=temp * nums [i + 1]
      • right [i]:=temp
  • đối với tôi trong phạm vi từ 0 đến kích thước của nums, hãy thực hiện
    • left [i]:=left [i] * right [i]
  • quay lại bên trái

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

 class Giải pháp:def giải (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 leftob =Solution () nums =[2, 3, 4, 5, 6] print (ob.solve (nums))  

Đầu vào

 [2, 3, 4, 5, 6] 

Đầu ra

 [360, 240, 180, 144, 120]