题解 | #牛奶工厂#
牛奶工厂
https://www.nowcoder.com/practice/264efc6e41394a0286c51eb2521ba386
考察知识点:数组,遍历
解题分析: 这道题可以通过新建一个新的数组,之后分别中time1和time2中取出一个最小值加入新的数组中,就实现了合并两个数组的同时按照升序排列两个数组,之后将新的数组拷贝给time1,完成最后的合并到time1的操作。(这里值得注意的是,time1和time2中,每次从中取出一个最小值了之后,从哪条数组取的就更新哪条数组的取值的index自加1,另外一条数组的index保持不变,等待下次取值的判断使用)
编程语言:C
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param time1 int整型一维数组 * @param time1Len int time1数组长度 * @param time2 int整型一维数组 * @param time2Len int time2数组长度 * @param m int整型 * @param n int整型 * @return int整型 */ int milk_sum(int* time1, int time1Len, int* time2, int time2Len, int m, int n ) { int new_time[1000] = {0}; int count1 = 0, count2 = 0, count_new = 0; int sum = 0; while (count1 < m || count2 < n) { if (count1 < m && count2 < n) { // 如果两个数组都没有遍历到最后一个元素,就进入这个if,从当前数值所指的值中,取出一个最小值,加入的新的数组中 if (time1[count1] < time2[count2]) new_time[count_new++] = time1[count1++]; else new_time[count_new++] = time2[count2++]; } else if (count1 < m) { // 如果time2数组遍历完了,time1还有元素,就将time1剩余的元素写入到新的数值中 new_time[count_new++] = time1[count1++]; } else if (count2 < n) { // 如果time1的元素遍历完了,就把time2剩余的元素都写入新的数组中 new_time[count_new++] = time2[count2++]; } sum += new_time[count_new-1]; // 对已经遍历的元素进行累积 } memcpy(time1, &new_time, time1Len); // 将新的数组复制给time1,完成最后的合并操作 return sum; }
面试高频TOP202解析 文章被收录于专栏
采用Java,C,Python等方法去解答面试高频TOP202题目,