LeetCode Weekly Contest 369 第 2 題 2918. Minimum Equal Sum of Two Arrays After Replacing Zeros

Pingshian Yu
Oct 29, 2023

--

原題:2918. Minimum Equal Sum of Two Arrays After Replacing Zeros

# 題目敘述:

給兩個含有正整數的陣列 nums1, nums2,要求把所有 0 用正整數取代,如果取代後兩個陣列總和無法相等,就回傳 -1;如果可以,就回傳最小的總和。

# 想法:

  • 回傳 -1 的條件是其中一個陣列的和 + 0 的數量大於另一個陣列的和,且另一個陣列沒有 0。原因是題目要求把 0 用正整數取代,所以至少要把 0 都用 1 取代,則第一個陣列的和會變成 total1 + zeros,如果這個和比另一個陣列的和大,那兩者就沒有機會相等了。
  • 由題目的 sample 1 可以知道,結果是由 total 比較大的陣列決定的 (nums2 = [6,5,0]) ,所以可以把題目簡化成 找兩個陣列中 total + zeros 大的。

# 上code:

class Solution:
def minSum(self, nums1: List[int], nums2: List[int]) -> int:
total1, total2 = sum(nums1), sum(nums2)
zero_1, zero_2 = nums1.count(0), nums2.count(0)

if ((total1 + zero_1 > total2 and zero_2 == 0)
or (total2 + zero_2 > total1 and zero_1 == 0)
):
return -1

return max(total2+zero_2, total1+zero_1)

這題寫的比第 1 題還快,是不是順序反了(?

總之,一星期又平安的度過了,關關難過但關關不說🥲 想當年爸媽也是那麼辛苦的😮‍💨 誰不是邊上班邊上課邊 side project 邊接案邊讀書會呢?

--

--