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

โปรแกรมค้นหารายการผลิตภัณฑ์ขององค์ประกอบทั้งหมดยกเว้นดัชนีปัจจุบันใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องหารายการใหม่ โดยที่แต่ละองค์ประกอบที่ดัชนี i ของรายการที่สร้างขึ้นใหม่เป็นผลคูณของตัวเลขทั้งหมดในรายการเดิม ยกเว้นรายการที่ดัชนี i ที่นี่เราต้องแก้โดยไม่ต้องใช้การหาร

ดังนั้น หากอินพุตเป็น nums =[2, 3, 4, 5, 6] ผลลัพธ์จะเป็น [360, 240, 180, 144, 120]

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

  • ถ้าขนาดของ nums <1 แล้ว
    • หมายเลขส่งคืน
  • l :=ขนาดของ nums
  • ซ้าย :=รายการขนาด l และเริ่มต้นค่าทั้งหมดเป็นโมฆะ
  • ขวา :=รายการขนาด l และเริ่มต้นค่าทั้งหมดเป็นโมฆะ
  • อุณหภูมิ :=1
  • สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
    • ถ้าฉันเหมือนกับ 0 แล้ว
      • left[i] :=อุณหภูมิ
    • มิฉะนั้น
      • อุณหภูมิ :=อุณหภูมิ * nums[i - 1]
      • left[i] :=อุณหภูมิ
  • อุณหภูมิ :=1
  • สำหรับฉันในช่วงขนาด nums - 1 ถึง 0, ลดลง 1 ทำ
    • ถ้าฉันมีขนาดเท่ากับ nums - 1 แล้ว
      • right[i] :=อุณหภูมิ
    • มิฉะนั้น
      • อุณหภูมิ :=อุณหภูมิ * nums[i + 1]
      • right[i] :=อุณหภูมิ
  • สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
    • left[i] :=left[i] * right[i]
  • กลับซ้าย

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

ตัวอย่าง

คลาสโซลูชัน:def แก้(ตัวเอง, nums):ถ้า 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)) 

อินพุต

[2, 3, 4, 5, 6]

ผลลัพธ์

[360, 240, 180, 144, 120]