题解 | #牛奶工厂#
牛奶工厂
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; } }