大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点:
- 数组操作
- 算法思维
题目解答方法的文字分析:
根据题目的要求,每天牛的产奶量都会比前一天多一升,且最高产奶量存放在数组的首位。我们需要对给定的牛奶产量数组进行处理,得到明天牛的产奶量数组。
思考过程:
首先,我们从数组的末尾开始遍历,因为最后一位产奶量对应的是明天的产奶量。
我们从数组的末尾开始,判断当前位的产奶量是否为9,如果是9,则需要进位。否则,直接在当前位的产奶量加1并返回结果数组。
如果产生了进位,则将当前位的产奶量设为0,并继续向前处理前一位的产奶量。
最后,如果第一位产奶量为0,表示最高产奶量也发生了进位,我们需要在数组的开头插入1表示新的最高产奶量。
使用的编程语言:C++
完整且正确的编程代码如下:
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param milk int整型vector
* @return int整型vector
*/
vector<int> tomorrowMilk(vector<int>& milk) {
int n = milk.size();
vector<int> tomorrow(n);
// 从数组末尾开始处理
int carry = 1; // 进位标志,初始为1,表示明天的产奶量需要加1
for (int i = n - 1; i >= 0; i--) {
int current = milk[i] + carry;
if (current == 10) {
carry = 1;
tomorrow[i] = 0;
} else {
carry = 0;
tomorrow[i] = current;
}
}
// 如果最高产奶量产生了进位,需要在数组开头插入1
if (carry == 1) {
tomorrow.insert(tomorrow.begin(), 1);
}
// 返回明天的产奶量数组
return tomorrow;
}
};

京公网安备 11010502036488号