考察的知识点:双指针;

解答方法分析:

  1. 定义一个空的向量 mergedTimes 来保存合并后的生产时间。
  2. 定义两个指针 p1 和 p2,分别指向 times1 和 times2 的起始位置。
  3. 完成以下操作直到 p1 或 p2 超出数组范围:如果 times1[p1] 小于等于 times2[p2],说明将 times1[p1] 加入到 mergedTimes 中,并将 p1 指针右移一位。如果 times1[p1] 大于 times2[p2],说明将 times2[p2] 加入到 mergedTimes 中,并将 p2 指针右移一位。
  4. 如果 p1 还未超出 times1 数组范围,则将 times1 中剩余的元素依次加入 mergedTimes 中。
  5. 如果 p2 还未超出 times2 数组范围,则将 times2 中剩余的元素依次加入 mergedTimes 中。
  6. 计算 mergedTimes 中生产时间之和,并返回结果。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param time1 int整型vector
     * @param time2 int整型vector
     * @param m int整型
     * @param n int整型
     * @return int整型
     */
    int milk_sum(vector<int>& time1, vector<int>& time2, int m, int n) {
        vector<int> mergedTimes;
        int p1 = 0;
        int p2 = 0;
        while (p1 < m && p2 < n) {
            if (time1[p1] <= time2[p2]) {
                mergedTimes.push_back(time1[p1]);
                p1++;
            } else {
                mergedTimes.push_back(time2[p2]);
                p2++;
            }
        }
        while (p1 < m) {
            mergedTimes.push_back(time1[p1]);
            p1++;
        }
        while (p2 < n) {
            mergedTimes.push_back(time2[p2]);
            p2++;
        }
        int sum = 0;
        for (int i = 0; i < mergedTimes.size(); i++) {
            sum += mergedTimes[i];
        }
        return sum;
    }
};