Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ผลิตภัณฑ์ของ Array ยกเว้น Self ใน Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums ของ n จำนวนเต็ม โดยที่ n> 1 เราต้องค้นหาเอาต์พุตของอาร์เรย์ที่เอาต์พุต[i] เท่ากับผลคูณขององค์ประกอบทั้งหมดของ nums ยกเว้น nums[i] ดังนั้นหากอาร์เรย์อินพุตคือ [1,2,3,4] เอาต์พุตจะเป็น [24,12,8,6] เราต้องแก้ปัญหานี้โดยไม่ต้องใช้ตัวดำเนินการหาร

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • right_mul :=อาร์เรย์ที่มีขนาดเท่ากับ nums ให้เติม 0
  • องค์ประกอบสุดท้ายของ right_mul =องค์ประกอบสุดท้ายของ nums
  • สำหรับฉันอยู่ในช่วง 1 ถึงความยาวของ nums
    • right_mul[length of nums – i – 1] =right_mul[length of nums – i]* nums[length of nums – i – 1]
  • output :=อาร์เรย์ที่มีขนาดเท่ากับ nums ให้เติมด้วย 0
  • คำนำหน้า :=1 และดัชนี :=0
  • ในขณะที่ดัชนี <ความยาวของเอาต์พุต – 1
    • ผลลัพธ์[ดัชนี] :=คำนำหน้า * right_mul[ดัชนี + 1]
    • คำนำหน้า :=คำนำหน้า * nums[ดัชนี]
    • ดัชนี :=ดัชนี + 1
  • องค์ประกอบสุดท้ายของผลลัพธ์ :=คำนำหน้า
  • ผลตอบแทนที่ได้

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution(object):
   def productExceptSelf(self, nums):
      right_multiply = [0] * len(nums)
      right_multiply[-1]=nums[-1]
      for i in range(1,len(nums)):
         right_multiply[len(nums)-i-1] = right_multiply[len(nums)-i] * nums[len(nums)-i-1]
      output = [0]*len(nums)
      prefix = 1
      current_index = 0
      while current_index < len(output)-1:
         output[current_index] = prefix * right_multiply[current_index+1]
         prefix *= nums[current_index]
         current_index +=1
      output[-1] = prefix
      return output
ob1 = Solution()
print(ob1.productExceptSelf([1,3,5,7,9]))

อินพุต

[1,3,5,7,9]

ผลลัพธ์

[945, 315, 189, 135, 105]