สมมติว่าเรามีรายการองค์ประกอบที่เรียกว่า 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