import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param milk int整型一维数组
* @return int整型一维数组
*/
public int[] tomorrowMilk (int[] milk) {
// write code here
// 将输入的整数数组转换为整数列表
List<Integer> milkList = new ArrayList<>();
for (int value : milk) {
milkList.add(value);
}
Collections.reverse(milkList); // 反转列表
milkList.set(0, milkList.get(0) + 1); // 第一个元素加 1
int carry = 0; // 进位
milkList.add(0); // 在末尾添加一个 0,用于处理进位
for (int i = 0; i < milkList.size(); i++) {
int sum = milkList.get(i) + carry;
milkList.set(i, sum % 10); // 当前位的值
carry = sum / 10; // 进位
}
// 移除末尾多余的 0
while (!milkList.isEmpty() && milkList.get(milkList.size() - 1) == 0) {
milkList.remove(milkList.size() - 1);
}
Collections.reverse(milkList); // 恢复正常顺序
// 将整数列表转换回整数数组
int[] result = new int[milkList.size()];
for (int i = 0; i < milkList.size(); i++) {
result[i] = milkList.get(i);
}
return result;
}
}
Java代码
主要考察了以下几个知识点:
- 向量操作
- 翻转
- 循环遍历:通过循环遍历向量中的元素,计算每一位的新值和进位。
- 进位处理
- 末尾多余零的移除
代码解释:
- 将输入的整数数组转换为整数列表。
- 反转列表,即将数组元素顺序颠倒。
- 将列表的第一个元素加 1,以表示明天的产奶量。
- 使用进位标志
carry,遍历列表中的每个元素,将当前位的值与进位相加,更新当前位的值和进位。 - 在列表末尾添加一个零,用于处理最高位的进位。
- 移除列表末尾多余的零,以保持结果的正确性。
- 恢复列表正常顺序,即将列表元素重新反转。
- 将整数列表转换回整数数组作为最终的计算结果。

京公网安备 11010502036488号