2363:合并相似的物品
This commit is contained in:
parent
a56691de26
commit
21fab7bd41
110
src/main/java/leetcode/editor/cn/MergeSimilarItems.java
Normal file
110
src/main/java/leetcode/editor/cn/MergeSimilarItems.java
Normal file
@ -0,0 +1,110 @@
|
||||
//<p>给你两个二维整数数组 <code>items1</code> 和 <code>items2</code> ,表示两个物品集合。每个数组 <code>items</code> 有以下特质:</p>
|
||||
//
|
||||
//<ul>
|
||||
// <li><code>items[i] = [value<sub>i</sub>, weight<sub>i</sub>]</code> 其中 <code>value<sub>i</sub></code> 表示第 <code>i</code> 件物品的 <strong>价值</strong> ,<code>weight<sub>i</sub></code> 表示第 <code>i</code> 件物品的 <strong>重量</strong> 。</li>
|
||||
// <li><code>items</code> 中每件物品的价值都是 <strong>唯一的</strong> 。</li>
|
||||
//</ul>
|
||||
//
|
||||
//<p>请你返回一个二维数组 <code>ret</code>,其中 <code>ret[i] = [value<sub>i</sub>, weight<sub>i</sub>]</code>, <code>weight<sub>i</sub></code> 是所有价值为 <code>value<sub>i</sub></code><sub> </sub>物品的 <strong>重量之和</strong> 。</p>
|
||||
//
|
||||
//<p><strong>注意:</strong><code>ret</code> 应该按价值 <strong>升序</strong> 排序后返回。</p>
|
||||
//
|
||||
//<p> </p>
|
||||
//
|
||||
//<p><strong>示例 1:</strong></p>
|
||||
//
|
||||
//<pre>
|
||||
//<b>输入:</b>items1 = [[1,1],[4,5],[3,8]], items2 = [[3,1],[1,5]]
|
||||
//<b>输出:</b>[[1,6],[3,9],[4,5]]
|
||||
//<b>解释:</b>
|
||||
//value = 1 的物品在 items1 中 weight = 1 ,在 items2 中 weight = 5 ,总重量为 1 + 5 = 6 。
|
||||
//value = 3 的物品再 items1 中 weight = 8 ,在 items2 中 weight = 1 ,总重量为 8 + 1 = 9 。
|
||||
//value = 4 的物品在 items1 中 weight = 5 ,总重量为 5 。
|
||||
//所以,我们返回 [[1,6],[3,9],[4,5]] 。
|
||||
//</pre>
|
||||
//
|
||||
//<p><strong>示例 2:</strong></p>
|
||||
//
|
||||
//<pre>
|
||||
//<b>输入:</b>items1 = [[1,1],[3,2],[2,3]], items2 = [[2,1],[3,2],[1,3]]
|
||||
//<b>输出:</b>[[1,4],[2,4],[3,4]]
|
||||
//<b>解释:</b>
|
||||
//value = 1 的物品在 items1 中 weight = 1 ,在 items2 中 weight = 3 ,总重量为 1 + 3 = 4 。
|
||||
//value = 2 的物品在 items1 中 weight = 3 ,在 items2 中 weight = 1 ,总重量为 3 + 1 = 4 。
|
||||
//value = 3 的物品在 items1 中 weight = 2 ,在 items2 中 weight = 2 ,总重量为 2 + 2 = 4 。
|
||||
//所以,我们返回 [[1,4],[2,4],[3,4]] 。</pre>
|
||||
//
|
||||
//<p><strong>示例 3:</strong></p>
|
||||
//
|
||||
//<pre>
|
||||
//<b>输入:</b>items1 = [[1,3],[2,2]], items2 = [[7,1],[2,2],[1,4]]
|
||||
//<b>输出:</b>[[1,7],[2,4],[7,1]]
|
||||
//<strong>解释:
|
||||
//</strong>value = 1 的物品在 items1 中 weight = 3 ,在 items2 中 weight = 4 ,总重量为 3 + 4 = 7 。
|
||||
//value = 2 的物品在 items1 中 weight = 2 ,在 items2 中 weight = 2 ,总重量为 2 + 2 = 4 。
|
||||
//value = 7 的物品在 items2 中 weight = 1 ,总重量为 1 。
|
||||
//所以,我们返回 [[1,7],[2,4],[7,1]] 。
|
||||
//</pre>
|
||||
//
|
||||
//<p> </p>
|
||||
//
|
||||
//<p><strong>提示:</strong></p>
|
||||
//
|
||||
//<ul>
|
||||
// <li><code>1 <= items1.length, items2.length <= 1000</code></li>
|
||||
// <li><code>items1[i].length == items2[i].length == 2</code></li>
|
||||
// <li><code>1 <= value<sub>i</sub>, weight<sub>i</sub> <= 1000</code></li>
|
||||
// <li><code>items1</code> 中每个 <code>value<sub>i</sub></code> 都是 <b>唯一的</b> 。</li>
|
||||
// <li><code>items2</code> 中每个 <code>value<sub>i</sub></code> 都是 <b>唯一的</b> 。</li>
|
||||
//</ul>
|
||||
//
|
||||
//<div><div>Related Topics</div><div><li>数组</li><li>哈希表</li><li>有序集合</li><li>排序</li></div></div><br><div><li>👍 48</li><li>👎 0</li></div>
|
||||
package leetcode.editor.cn;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
// 2363:合并相似的物品
|
||||
public class MergeSimilarItems {
|
||||
public static void main(String[] args) {
|
||||
Solution solution = new MergeSimilarItems().new Solution();
|
||||
// TO TEST
|
||||
}
|
||||
|
||||
//leetcode submit region begin(Prohibit modification and deletion)
|
||||
class Solution {
|
||||
public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {
|
||||
List<List<Integer>> list = new ArrayList<>();
|
||||
int xLength = items1.length + items2.length;
|
||||
int[][] arr = new int[xLength][2];
|
||||
for (int i = 0; i < items1.length; i++) {
|
||||
arr[i] = items1[i];
|
||||
}
|
||||
int x1 = items1.length;
|
||||
for (int i = 0; i < items2.length; i++) {
|
||||
arr[i + x1] = items2[i];
|
||||
}
|
||||
Arrays.sort(arr, new Comparator<int[]>() {
|
||||
@Override
|
||||
public int compare(int[] o1, int[] o2) {
|
||||
return o1[0] - o2[0];
|
||||
}
|
||||
});
|
||||
int weight = arr[0][1];
|
||||
for (int i = 1; i < xLength; i++) {
|
||||
if (arr[i - 1][0] == arr[i][0]) {
|
||||
weight += arr[i][1];
|
||||
} else {
|
||||
list.add(Arrays.asList(arr[i - 1][0], weight));
|
||||
weight = arr[i][1];
|
||||
}
|
||||
}
|
||||
list.add(Arrays.asList(arr[xLength - 1][0], weight));
|
||||
return list;
|
||||
}
|
||||
}
|
||||
//leetcode submit region end(Prohibit modification and deletion)
|
||||
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
<p>给你两个二维整数数组 <code>items1</code> 和 <code>items2</code> ,表示两个物品集合。每个数组 <code>items</code> 有以下特质:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>items[i] = [value<sub>i</sub>, weight<sub>i</sub>]</code> 其中 <code>value<sub>i</sub></code> 表示第 <code>i</code> 件物品的 <strong>价值</strong> ,<code>weight<sub>i</sub></code> 表示第 <code>i</code> 件物品的 <strong>重量</strong> 。</li>
|
||||
<li><code>items</code> 中每件物品的价值都是 <strong>唯一的</strong> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回一个二维数组 <code>ret</code>,其中 <code>ret[i] = [value<sub>i</sub>, weight<sub>i</sub>]</code>, <code>weight<sub>i</sub></code> 是所有价值为 <code>value<sub>i</sub></code><sub> </sub>物品的 <strong>重量之和</strong> 。</p>
|
||||
|
||||
<p><strong>注意:</strong><code>ret</code> 应该按价值 <strong>升序</strong> 排序后返回。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>items1 = [[1,1],[4,5],[3,8]], items2 = [[3,1],[1,5]]
|
||||
<b>输出:</b>[[1,6],[3,9],[4,5]]
|
||||
<b>解释:</b>
|
||||
value = 1 的物品在 items1 中 weight = 1 ,在 items2 中 weight = 5 ,总重量为 1 + 5 = 6 。
|
||||
value = 3 的物品再 items1 中 weight = 8 ,在 items2 中 weight = 1 ,总重量为 8 + 1 = 9 。
|
||||
value = 4 的物品在 items1 中 weight = 5 ,总重量为 5 。
|
||||
所以,我们返回 [[1,6],[3,9],[4,5]] 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>items1 = [[1,1],[3,2],[2,3]], items2 = [[2,1],[3,2],[1,3]]
|
||||
<b>输出:</b>[[1,4],[2,4],[3,4]]
|
||||
<b>解释:</b>
|
||||
value = 1 的物品在 items1 中 weight = 1 ,在 items2 中 weight = 3 ,总重量为 1 + 3 = 4 。
|
||||
value = 2 的物品在 items1 中 weight = 3 ,在 items2 中 weight = 1 ,总重量为 3 + 1 = 4 。
|
||||
value = 3 的物品在 items1 中 weight = 2 ,在 items2 中 weight = 2 ,总重量为 2 + 2 = 4 。
|
||||
所以,我们返回 [[1,4],[2,4],[3,4]] 。</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>items1 = [[1,3],[2,2]], items2 = [[7,1],[2,2],[1,4]]
|
||||
<b>输出:</b>[[1,7],[2,4],[7,1]]
|
||||
<strong>解释:
|
||||
</strong>value = 1 的物品在 items1 中 weight = 3 ,在 items2 中 weight = 4 ,总重量为 3 + 4 = 7 。
|
||||
value = 2 的物品在 items1 中 weight = 2 ,在 items2 中 weight = 2 ,总重量为 2 + 2 = 4 。
|
||||
value = 7 的物品在 items2 中 weight = 1 ,总重量为 1 。
|
||||
所以,我们返回 [[1,7],[2,4],[7,1]] 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= items1.length, items2.length <= 1000</code></li>
|
||||
<li><code>items1[i].length == items2[i].length == 2</code></li>
|
||||
<li><code>1 <= value<sub>i</sub>, weight<sub>i</sub> <= 1000</code></li>
|
||||
<li><code>items1</code> 中每个 <code>value<sub>i</sub></code> 都是 <b>唯一的</b> 。</li>
|
||||
<li><code>items2</code> 中每个 <code>value<sub>i</sub></code> 都是 <b>唯一的</b> 。</li>
|
||||
</ul>
|
||||
|
||||
<div><div>Related Topics</div><div><li>数组</li><li>哈希表</li><li>有序集合</li><li>排序</li></div></div><br><div><li>👍 48</li><li>👎 0</li></div>
|
Loading…
Reference in New Issue
Block a user