考察知识点:数组
题目分析:
我们分析每一个结果是由哪些数相乘得到的,从中可以发现他们的规律。
如上图所示,将每个位置的数从上到下乘起来就是最终的结果。如果我们只看右上角,那么第二个数下面的结果1可以给到第三个数,那么第三个数就只需再乘一个数2就能计算这部分的结果。同理将第三个数的结果给到第四个数,那么第四个数只需再乘一个数3就能计算这部分的结果,同理向右进行填值。
然后再看左下角,和上述算法是一样的,可以从右往左遍历一遍,利用前一个数得到的部分结果,就能很快算出当前位置的结果。
所用编程语言:C++
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param milk_amount int整型vector * @return int整型vector */ vector<int> product_except_self(vector<int>& milk_amount) { // write code here int size = milk_amount.size(); vector<int> others(size, 1); int temp = 1; for (int i = 0; i < size - 1; i++) { temp *= milk_amount[i]; others[i + 1] = temp; } temp = 1; for (int i = size - 1; i > 0; i--) { temp *= milk_amount[i]; others[i - 1] *= temp; } return others; } };