考察知识点:数组
题目分析:
我们分析每一个结果是由哪些数相乘得到的。
如上图所示,将每个位置的数从上到下乘起来就是最终的结果。如果我们只看右上角,那么第三个数下面的结果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;
}
};

京公网安备 11010502036488号