class Solution public vectorint productExceptSelfvectorint& nums int front_next=new intnumssize; int end_next=new intnumssize; vectorintarrtnumssize1; forint i=0;inumss
在您的代码中,存在两个错误:
-
在创建
front_next和end_next数组时,使用了new操作符,但在最后没有使用delete操作符来释放内存。这可能导致内存泄漏。解决方法是使用vector来代替指针数组,这样就不需要手动释放内存了。 -
在计算
arrt数组时,有一个逻辑错误。当i-1<0时,应该将arrt[i]的值设置为end_next[i+1],而不是end_next[i]。
下面是修正后的代码:
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> front_next(nums.size());
vector<int> end_next(nums.size());
vector<int> arrt(nums.size(), 1);
front_next[0] = nums[0];
end_next[nums.size() - 1] = nums[nums.size() - 1];
for (int i = 1; i < nums.size(); i++) {
front_next[i] = front_next[i - 1] * nums[i];
}
for (int i = nums.size() - 2; i >= 0; i--) {
end_next[i] = end_next[i + 1] * nums[i];
}
for (int i = 0; i < nums.size(); i++) {
if (i - 1 < 0) {
arrt[i] = end_next[i + 1];
} else if (i + 1 >= nums.size()) {
arrt[i] = front_next[i - 1];
} else {
arrt[i] = front_next[i - 1] * end_next[i + 1];
}
}
return arrt;
}
};
``
原文地址: https://www.cveoy.top/t/topic/imGK 著作权归作者所有。请勿转载和采集!