考察的知识点:双指针;
解答方法分析:
- 定义一个空的向量 mergedTimes 来保存合并后的生产时间。
- 定义两个指针 p1 和 p2,分别指向 times1 和 times2 的起始位置。
- 完成以下操作直到 p1 或 p2 超出数组范围:如果 times1[p1] 小于等于 times2[p2],说明将 times1[p1] 加入到 mergedTimes 中,并将 p1 指针右移一位。如果 times1[p1] 大于 times2[p2],说明将 times2[p2] 加入到 mergedTimes 中,并将 p2 指针右移一位。
- 如果 p1 还未超出 times1 数组范围,则将 times1 中剩余的元素依次加入 mergedTimes 中。
- 如果 p2 还未超出 times2 数组范围,则将 times2 中剩余的元素依次加入 mergedTimes 中。
- 计算 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; } };