在您的代码中,存在两个错误:

  1. 在创建front_nextend_next数组时,使用了new操作符,但在最后没有使用delete操作符来释放内存。这可能导致内存泄漏。解决方法是使用vector来代替指针数组,这样就不需要手动释放内存了。

  2. 在计算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;
    }
};
``
class Solution public vectorint productExceptSelfvectorint& nums int front_next=new intnumssize; int end_next=new intnumssize; vectorintarrtnumssize1; forint i=0;inumss

原文地址: https://www.cveoy.top/t/topic/imGK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录