考察的知识点:数组;

解答方法分析:

  1. 创建一个长度为n的正整数数组left,并将所有元素初始化为1。
  2. 创建一个长度为n的正整数数组right,并将所有元素初始化为1。
  3. 使用循环从索引2开始遍历数组nums,将left数组的当前位置元素设置为left数组上一个位置元素乘以nums数组当前位置上两个元素的乘积。
  4. 使用逆向循环从倒数第三个位置开始遍历数组nums,将right数组的当前位置元素设置为right数组下一个位置元素乘以nums数组当前位置下两个元素的乘积。
  5. 创建一个长度为n的正整数数组result,并将每个位置上的元素初始化为1。
  6. 使用循环遍历数组nums,将result数组的当前位置元素设置为left数组当前位置元素乘以right数组当前位置元素。
  7. 返回result数组作为最终的结果。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型vector
     */
    vector<int> productExceptSelf(vector<int>& nums) {
        int n = nums.size();
        vector<int> left(n, 1);
        vector<int> right(n, 1);
        vector<int> res(n, 1);

        for (int i = 2; i < n; i++)
            left[i] = left[i - 1] * nums[i - 2];
        for (int i = n - 3; i >= 0; i--)
            right[i] = right[i + 1] * nums[i + 2];
        for (int i = 0; i < n; i++) {
            left[i] *= right[i];
        }
        return left;
    }
};