题解 | #牛群重量积#
牛群重量积
https://www.nowcoder.com/practice/d3c6930f140f4b7dbf3a53dd36742193
考察的知识点:数组;
解答方法分析:
- 创建一个长度为n的正整数数组left,并将所有元素初始化为1。
- 创建一个长度为n的正整数数组right,并将所有元素初始化为1。
- 使用循环从索引2开始遍历数组nums,将left数组的当前位置元素设置为left数组上一个位置元素乘以nums数组当前位置上两个元素的乘积。
- 使用逆向循环从倒数第三个位置开始遍历数组nums,将right数组的当前位置元素设置为right数组下一个位置元素乘以nums数组当前位置下两个元素的乘积。
- 创建一个长度为n的正整数数组result,并将每个位置上的元素初始化为1。
- 使用循环遍历数组nums,将result数组的当前位置元素设置为left数组当前位置元素乘以right数组当前位置元素。
- 返回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; } };