大家好,我是开车的阿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; } };