Java 题解 | #牛奶工厂#
牛奶工厂
https://www.nowcoder.com/practice/264efc6e41394a0286c51eb2521ba386
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param time1 int整型一维数组 * @param time2 int整型一维数组 * @param m int整型 * @param n int整型 * @return int整型 */ public int milk_sum (int[] time1, int[] time2, int m, int n) { // write code here // 创建一个新数组用于存储合并后的生产时间 int[] mergedTimes = new int[m + n]; // 合并两个数组,保持非递减顺序 int i = 0, j = 0, k = 0; while (i < m && j < n) { if (time1[i] <= time2[j]) { mergedTimes[k++] = time1[i++]; } else { mergedTimes[k++] = time2[j++]; } } // 将剩余未合并的元素添加到新数组中 while (i < m) { mergedTimes[k++] = time1[i++]; } while (j < n) { mergedTimes[k++] = time2[j++]; } // 计算合并后的数组中生产时间之和 int sum = 0; for (int time : mergedTimes) { sum += time; } return sum; } }
该题考察的知识点:
- 数组操作
- 指针技巧
- 数组长度和元素数目
代码的文字解释:
- 初始化三个指针
i
、j
和k
,分别指向数组time1
、time2
和mergedTimes
的起始位置。 - 使用
while
循环,同时遍历数组time1
和time2
,比较当前位置上的元素大小,并将较小的元素添加到mergedTimes
数组中,然后将相应的指针右移。 - 当其中一个数组遍历完毕后,将剩余未合并的元素依次添加到
mergedTimes
数组中。 - 使用
for
循环遍历mergedTimes
数组,计算所有生产时间的总和并将其累加到变量sum
中。 - 返回计算得到的
sum
值作为结果。