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