前往
大廳
主題

LeetCode - 2570. Merge Two 2D Arrays by Summing Values 解題心得

Not In My Back Yard | 2024-01-22 12:00:11 | 巴幣 0 | 人氣 50

題目連結:


題目意譯:
你被給定兩個二維整數陣列 nums1 和 nums2。

nums1[i] = [idi, vali] 代表著該位置的數字有著 ID 編號 idi 以及數值 vali。

nums2[i] = [idi, vali] 代表著該位置的數字有著 ID 編號 idi 以及數值 vali。

每個陣列中各自的 ID 編號彼此相異且是以 ID 編號大小升序排序。

將兩個陣列合併成一個新的陣列(同樣以 ID 編號大小升序排序),代表著以下條件:
    只有那些有出現在至少一個陣列中的 ID 編號才要包含進結果陣列中、
    每個 ID 編號只應被包含一次,而其對應數值為在兩陣列中該 ID 編號對應數值之總和。如果這個 ID 編號在某個陣列中不存在,則將其數值視為 0。

回傳結果陣列。回傳陣列也應以 ID 編號大小升序排序。

限制:
1 ≦ nums1.length, nums2.length ≦ 200
nums1[i].length == nums2[j].length == 2
1 ≦ idi, vali ≦ 1000
兩個陣列中各自的 ID 編號彼此相異。
兩個陣列中各自是以 ID 編號大小升序排序。



範例測資:
範例 1:
輸入: nums1 = [[1,2],[2,3],[4,5]], nums2 = [[1,4],[3,2],[4,1]]
輸出: [[1,6],[2,3],[3,2],[4,6]]
解釋: 結果陣列包含以下:
- id = 1,此 ID 數值為 2 + 4 = 6。
- id = 2,此 ID 數值為 3。
- id = 3,此 ID 數值為 2。
- id = 4,此 ID 數值為 5 + 1 = 6。

範例 2:
輸入: nums1 = [[2,4],[3,6],[5,5]], nums2 = [[1,3],[4,3]]
輸出: [[1,3],[2,4],[3,6],[4,3],[5,5]]
解釋: 沒有相同的 ID 出現,所以我們只需要在結果陣列中包含兩陣列的 ID 以及對應數值即可。


解題思維:
因為 ID 編號只會是 1 ~ 1000 這個範圍中的數字,因此直接用一個大小 1001(索引值從 0 開始)的陣列來儲存兩個陣列各自 ID 的數值總和。

最後再把數值總和 > 0 的 ID 編號由小到大丟進結果陣列即可(因為對應數值必定 > 0,所以有出現在兩陣列之一等價於數值總和 > 0)。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作