Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/10/19 18:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1010/1554 (看更多)
2918. Minimum Equal Sum of Two Arrays After Replacing Zeros 給兩個整數矩陣nums1、nums由0以上的數字組成 請把nums1、nums2中的0更換成大於0的數字 使nums1的元素總和 = nums2的元素總和 並且回傳經過上述操作後最小的總和 如果無法透過上述操作使nums1、nums2的總和相等 就回傳-1 思路: 先分別計算nums1、num2的總和(sum1、sum2)以及0出現的次數(zero1、zero2) 只要nums1、nums2都有0那一定可以使兩個的總和相等 所以需要回傳-1的情況需要滿足下列2個條件的任一個: (1)zero1等於0 且 sum1-sum2 < zero2 (2)zero2等於0 且 sum2-sum1 < zero1 不是上述情況的話 就要去比較sum1、sum2誰比較大 (1)sum1比較大 回傳sum2 + max(zero2 , sum1-sum2 + zero1 ) (2)sum2比較大 回傳sum1 + max(zero1 , sum2-sum1 + zero2) (3)sum1 == sum2 回傳 sum1 + max(zero1、zero2) golang code : func minSum(nums1 []int, nums2 []int) int64 { zero_num1, zero_num2 := 0, 0 sum1, sum2 := 0, 0 for _, val := range nums1 { sum1 += val if val == 0 { zero_num1++ } } for _, val := range nums2 { sum2 += val if val == 0 { zero_num2++ } } if (zero_num1 == 0 && sum1-sum2 < zero_num2) || (zero_num2 == 0 && sum2-sum1 < zero_num1) { return -1 } if sum1 > sum2 { return int64(sum2 + (max(zero_num2, sum1-sum2+zero_num1))) } else { return int64(sum1 + (max(zero_num1, sum2-sum1+zero_num2))) } } -- https://i.imgur.com/r9FBAGO.gif
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.214.188 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1729335310.A.134.html
文章代碼(AID): #1d4v0E4q (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1d4v0E4q (Marginalman)