2570.合并两个二维数组-求和法
链接:2570.合并两个二维数组-求和法
难度:Easy
标签:数组、哈希表、双指针
简介:合并两个二维数组。
题解 1 - rust
- 编辑时间:2023-02-19
- 内存消耗:2.2MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn merge_arrays(nums1: Vec<Vec<i32>>, nums2: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
        let mut ans = vec![];
        let (mut i1, mut i2, n1, n2) = (0, 0, nums1.len(), nums2.len());
        while i1 < n1 || i2 < n2 {
            if i1 == n1 {
                ans.push(nums2[i2].clone());
                i2 += 1
            } else if i2 == n2 {
                ans.push(nums1[i1].clone());
                i1 += 1
            } else {
                if nums1[i1][0] == nums2[i2][0] {
                    let mut item = vec![nums1[i1][0]; 2];
                    item[1] = nums1[i1][1] + nums2[i2][1];
                    ans.push(item);
                    i1 += 1;
                    i2 += 1;
                } else if nums1[i1][0] < nums2[i2][0] {
                    ans.push(nums1[i1].clone());
                    i1 += 1;
                } else {
                    ans.push(nums2[i2].clone());
                    i2 += 1;
                }
            }
        }
        ans
    }
}
题解 2 - python
- 编辑时间:2023-02-19
- 执行用时:40ms
- 内存消耗:15.1MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def mergeArrays(self, nums1: List[List[int]], nums2: List[List[int]]) -> List[List[int]]:
        ans = []
        i1, i2, n1, n2 = 0, 0, len(nums1), len(nums2)
        while i1 < n1 or i2 < n2:
            if i1 == n1:
                ans.append(nums2[i2])
                i2 += 1
            elif i2 == n2:
                ans.append(nums1[i1])
                i1 += 1
            else:
                if nums1[i1][0] == nums2[i2][0]:
                    ans.append([
                        nums1[i1][0],
                        nums1[i1][1] + nums2[i2][1]
                    ])
                    i1 += 1
                    i2 += 1
                elif nums1[i1][0] < nums2[i2][0]:
                    ans.append(nums1[i1])
                    i1 += 1
                else:
                    ans.append(nums2[i2])
                    i2 += 1
        return ans
题解 3 - cpp
- 编辑时间:2023-02-19
- 执行用时:8ms
- 内存消耗:10.4MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
    public:
        vector<vector<int>> mergeArrays(vector<vector<int>>& nums1, vector<vector<int>>& nums2) {
            vector<vector<int>> ans;
            int i1 = 0, i2 = 0;
            int n1 = nums1.size(), n2 = nums2.size();
            while (i1 < n1 || i2 < n2) {
                if (i1 == n1) ans.push_back(nums2[i2++]);
                else if (i2 == n2) ans.push_back(nums1[i1++]);
                else {
                    if (nums1[i1][0] == nums2[i2][0]) {
                        vector<int> item(2, nums1[i1][0]);
                        item[1] = nums1[i1++][1] + nums2[i2++][1];
                        ans.push_back(item);
                    } else if (nums1[i1][0] < nums2[i2][0]) {
                        ans.push_back(nums1[i1++]);
                    } else {
                        ans.push_back(nums2[i2++]);
                    }
                }
            }
            return ans;
        }
    };