题解 | #牛奶工厂#
牛奶工厂
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;
}
}
查看12道真题和解析


腾讯公司福利 1143人发布