1. 首页
  2. 软件开发
  3. day-28 除自身以外数组的乘积

day-28 除自身以外数组的乘积

  • 发布于 2024-09-26
  • 1 次阅读


思路
利用两个空数组left(left[i]表示nums下标从0到i的乘积)和right(right[i]表示nums下标从n-1到i的乘积)

解题方法
返回数组nums[i]=right[i+1]*left[i-1],第一个元素和最后一个元素单独考虑

Code

class Solution {

    public int[] productExceptSelf(int[] nums) {

        int n=nums.length;
        int left[]=new int[n];
        int right[]=new int[n];
        left[0]=nums[0];
        right[n-1]=nums[n-1];
        for(int i=1;i<n;i++){

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

            right[i]=nums[i]*right[i+1];
        }
      for(int i=0;i<n;i++){

        if(i==0){

            nums[i]=right[i+1];
        }else if(i==n-1){

            nums[i]=left[i-1];
        }else{

            nums[i]=right[i+1]*left[i-1];
        }
      }
      return nums;
    }
}

原文链接: https://blog.csdn.net/qq_53568730/article/details/138466687