题解 | #牛奶工厂#

牛奶工厂

https://www.nowcoder.com/practice/264efc6e41394a0286c51eb2521ba386

知识点

双指针

解题思路

然后,我们使用两个指针 i 和 j,分别指向数组 time1 和 time2 的起始位置。同时,我们使用一个变量 ans来记录生产时间之和,并初始化为0。

接下来,我们开始合并 time2 到 time1。我们将 time1[i] 和 time2[j] 中较小的一个加入到合并后的数组中,并将较小的数对应的指针向后移动一位。同时,我们将对应的生产时间加到 ans中。

如果其中一个指针已经到达了数组末尾,我们将另一个数组剩余的部分依次加入到合并后的数组中,并将对应的生产时间加到 ans中。

最后,当两个指针都到达了各自数组的末尾时,我们得到了合并后的数组 time1,并且 ans就是合并后的生产时间之和。

Java题解

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;
        int j = 0;
        int ans = 0;
        int k = 0;
        while (i < m && j < n) {
            if (time1[i] <= time2[j]) {
                mergedTimes[k] = time1[i];
                ans += time1[i];
                i++;
            } else {
                mergedTimes[k] = time2[j];
                ans += time2[j];
                j++;
            }
            k++;
        }

        while (i < m) {
            mergedTimes[k] = time1[i];
            ans += time1[i];
            i++;
            k++;
        }

        while (j < n) {
            mergedTimes[k] = time2[j];
            ans += time2[j];
            j++;
            k++;
        }

        // 将合并后的数组赋值给 times1
        System.arraycopy(mergedTimes, 0, time1, 0, m + n);
        return ans;
    }
}

全部评论
还在做题
点赞 回复 分享
发布于 2023-08-15 22:26 四川

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
勤劳的香菇求被捞求offer:满帮笔试都不给我发 似乎被卡本了
投递满帮集团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务