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

โปรแกรมค้นหาผลรวมสูงสุดโดยดำเนินการปฏิเสธมากที่สุด k ใน Python


สมมติว่าเรามีรายการองค์ประกอบที่เรียกว่า nums เราก็มีค่า k อีกค่าหนึ่งเช่นกัน ตอนนี้ให้เราพิจารณาการดำเนินการที่เราเลือกองค์ประกอบจาก nums และลบล้างมัน เราสามารถดำเนินการได้ k จำนวนที่แน่นอน เราต้องหาผลรวมสูงสุดที่สามารถสร้างได้

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[2, 1, -6, -2] k =3 ผลลัพธ์จะเป็น 9 หากเราลบล้าง -6 และ -2 และ 1 จะได้รับ [2, -1, 6 , 2] และผลรวมของมันคือ 9

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

  • n :=ขนาดของ nums

  • ถ้า n เท่ากับ 0 แล้ว

    • คืนค่า 0

  • เรียงเลขรายการ

  • สำหรับ idx ในช่วง 0 ถึง n - 1 ให้ทำ

    • ถ้า nums[idx] <0 และ k> 0 แล้ว

      • k :=k - 1

      • nums[idx] :=-nums[idx]

  • ถ้า k เป็นเลขคี่

    • return (ผลรวมขององค์ประกอบทั้งหมดที่มีอยู่ใน nums) - (2 * ขั้นต่ำของ nums)

  • ส่งคืนผลรวมขององค์ประกอบทั้งหมดที่มีอยู่ใน nums

ตัวอย่าง

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

def solve(nums, k):
   n = len(nums)
   if n == 0:
      return 0

   nums.sort()
   for idx in range(n):
      if nums[idx] < 0 and k > 0:
         k -= 1
         nums[idx] *= -1

   if k & 1 == 1:
      return sum(nums) - 2 * min(nums)

   return sum(nums)

nums = [2, 1, -6, -2]
k = 3
print(solve(nums, k))

อินพุต

[2, 1, -6, -2], 3

ผลลัพธ์

9