文章

每日LeetCode 239

2021.10.8 ・ 共 385 字,您可能需要 1 分钟阅读

Tags: LeetCode

给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

输入: [1,2,3,4] 输出: [24,12,8,6]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/product-of-array-except-self 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int[] ans = new int[nums.length];
        int temp = 1;
        for (int i = 0 ; i < ans.length; i++) {
            ans[i] = temp;
            temp *= nums[i];
        }
        temp = 1;
        for (int i = ans.length - 1; i >= 0; i--) {
            ans[i] = temp * ans[i];
            temp *= nums[i];
        }
        return ans;
    }
}

第一次循环:ans 中的值为当前数左面的乘积,因为第一个数左面没有数,所以初始设置为 1;

第二次循环:temp 为当前数右面的乘积,与刚才计算出来的 ans 乘在一起即可。

时间复杂度:O(N) ,其中 N 指的是数组 nums 的大小。 空间复杂度:O(1),输出数组不算进空间复杂度中,因此我们只需要常数的空间存放变量。