前往
大廳
主題

LeetCode - 2363. Merge Similar Items 解題心得

Not In My Back Yard | 2023-06-20 12:00:01 | 巴幣 100 | 人氣 116

題目連結:


題目意譯:
你被給定兩個二維整數陣列 items1 和 items2,代表兩個物品之集合。每個陣列 items 有著以下性質:
items[i] = [valuei, weighti],其中 valuei 代表著第 i 個物品的價值而 weighti 為其重量。
items 中每一個物品的價值彼此相異。

回傳一個二維陣列 ret,其中 [valuei, weighti],其中 weighti 為所有價值等於 valuei 的物品之重量總和。

注: ret 中的元素應以價值由低到高排序再回傳。

限制:
1 ≦ items1.length, items2.length ≦ 1000
items1[i].length == items2[i].length == 2
1 ≦ valuei, weighti ≦ 1000
items1 中的 valuei 彼此相異。
items2 中的 valuei 彼此相異。



範例測資:
範例 1:
輸入: items1 = [[1,1],[4,5],[3,8]], items2 = [[3,1],[1,5]]
輸出: [[1,6],[3,9],[4,5]]
解釋:
在 items1 中價值 = 1 的物品重量 = 1,而在 items2 中則重量 = 5,總重量 = 1 + 5 = 6。
在 items1 中價值 = 3 的物品重量 = 8,而在 items2 中則重量 = 1,總重量 = 8 + 1 = 9。
在 items1 中價值 = 4 的物品重量 = 5,總重量 = 5。
因此我們回傳 [[1,6],[3,9],[4,5]]。

範例 2:
輸入: items1 = [[1,1],[3,2],[2,3]], items2 = [[2,1],[3,2],[1,3]]
輸出: [[1,4],[2,4],[3,4]]
解釋:
在 items1 中價值 = 1 的物品重量 = 1,而在 items2 中則重量 = 3,總重量 = 1 + 3 = 4。
在 items1 中價值 = 2 的物品重量 = 3,而在 items2 中則重量 = 1,總重量 = 3 + 1 = 4。
在 items1 中價值 = 3 的物品重量 = 2,而在 items2 中則重量 = 2,總重量 = 2 + 2 = 4。
因此我們回傳 [[1,4],[2,4],[3,4]]。

範例 3:
輸入: items1 = [[1,3],[2,2]], items2 = [[7,1],[2,2],[1,4]]
輸出: [[1,7],[2,4],[7,1]]
解釋:
在 items1 中價值 = 1 的物品重量 = 3,而在 items2 中則重量 = 4,總重量 = 3 + 4 = 7。
在 items1 中價值 = 2 的物品重量 = 2,而在 items2 中則重量 = 2,總重量 = 2 + 2 + 4。
在 items2 中價值 = 7 的物品重量 = 1,總重量 = 1。
因此我們回傳 [[1,7],[2,4],[7,1]]。


解題思維:
因為價值的範圍只有 [1, 1000],因此我們直接開一個適當大小的陣列來儲存對於每一個價值最後於兩個陣列的重量總和即可。

因此我們就各掃過一次 items1 和 items2,然後在陣列中 valuei 的位置加上 weighti。最後掃過一次價值 1 到 1000,把重量總和 > 0 的元素抓出來丟到一個新的陣列,最後便可以得到所求的 ret。




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

創作回應

更多創作