สมมติว่าเรามีสองรายการที่เรียกว่า nums และ multipliers ตอนนี้ให้พิจารณาการดำเนินการที่เราสามารถลบตัวเลขใดๆ ออกจาก nums และลบตัวเลขใดๆ ออกจากตัวคูณแล้วคูณเข้าด้วยกัน เราต้องทำซ้ำการดำเนินการนี้จนกว่ารายการใดรายการหนึ่งจะว่างเปล่า เราต้องหาผลรวมสูงสุดของตัวเลขที่คูณ
ดังนั้น หากอินพุตเป็น nums =[-4, 4, 3] ตัวคูณ =[-2, 2] ผลลัพธ์จะเป็น 16 เนื่องจากเราสามารถจับคู่ -4 กับ -2 และ 4 กับ 2 ได้ -4 * -2 + 4 * 2.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
เรียงเลขรายการ
-
เรียงลำดับรายการตัวคูณ
-
res :=0
-
ถ้าขนาดของ nums <ขนาดของตัวคูณ แล้ว
-
สลับเลขและตัวคูณ :=ตัวคูณ, ตัวเลข
-
-
n :=ขนาดของ nums
-
m :=ขนาดของตัวคูณ
-
สำหรับฉันในช่วง 0 ถึง m - 1 ทำ
-
ถ้าตัวคูณ[i] <=0 แล้ว
-
res :=res + nums[i] * ตัวคูณ[i]
-
-
มิฉะนั้น
-
res :=res + ตัวคูณ[i] * nums[n -(m - i)]
-
-
-
ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
def solve(nums, multipliers): nums.sort() multipliers.sort() res = 0 if len(nums) < len(multipliers): nums, multipliers = multipliers, nums n, m = len(nums), len(multipliers) for i in range(m): if multipliers[i] <= 0: res += nums[i] * multipliers[i] else: res += multipliers[i] * nums[n - (m - i)] return res nums = [-4, 4, 3] multipliers = [-2, 2] print(solve(nums, multipliers))
อินพุต
[-4, 4, 3], [-2, 2]
ผลลัพธ์
16