题解 | #牛奶工厂#

牛奶工厂

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题目,

全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
04-02 20:12
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务