题解 | #牛奶工厂#

牛奶工厂

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

知识点:双指针

如果只是对数组进行求和,只需要遍历两个数组即可得到答案。但是题目中还要求了对数组进行非递减的排序操作,并指定合并到time1中,我们可以从后往前遍历两个数组,将较大者存入time1数组末尾,当二者中有一个遍历完成,则可以停止比较,若是time1有剩余元素,则无需进行任何赋值操作。若是time2有剩余元素,则需要将其赋值至time1中。

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 sum = 0;
        int i = m  - 1, j = n - 1;
        int index = m + n - 1;
        while(i >= 0 && j >= 0) {
            if(time1[i] >= time2[j]) {
                sum += time1[i];
                time1[index--] = time1[i--];
            }else {
                sum += time2[j];
                time1[index--] = time2[j--];
            }
        }
        while(j >= 0) {
            sum += time2[j];
            time1[index--] = time2[j--];
        }
        while(i >= 0) {
            sum += time1[i--];
        }
        return sum;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务