题解 | #牛奶工厂#

牛奶工厂

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

  1. 题目考察的知识点

数组,双指针

  1. 题目解答方法的文字分析

观察可知,time1的后半部分是空的,可以直接覆盖而不会影响结果。因此可以指针设置为从后向前遍历,每次取两者之中的较大者放进time1的最后面。

  1. 本题解析所用的编程语言

java

  1. 完整且正确的编程代码
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) {
        int ans=0;
        int p1 = m - 1, p2 = n - 1;
        int tail = m + n - 1;
        int cur;
        // 从time1的后往前填充最大值
        while (p1 >= 0 || p2 >= 0) {
            // time1或者time2其中一个数组已经全部填充到time1中,剩下遍历另外一个数组即可
            if (p1 == -1) {
                ans+=time2[p2];
                cur = time2[p2--];
            } else if (p2 == -1) {
                ans+=time1[p1];
                cur = time1[p1--];
            // time1和time2当前哪个数组值大,就填充哪个值
            } else if (time1[p1] >time2[p2]) {
                ans+=time1[p1];
                cur = time1[p1--];
            } else {
                ans+=time2[p2];
                cur = time2[p2--];
            }
            time1[tail--] = cur;
        }
    
        return ans;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务