JAVA练习102-除自身以外数组的乘积

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

4月8日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目-除自身以外数组的乘积

1.题目描述

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。

请不要使用除法,且在 O(n) 时间复杂度内完成此题。

示例 1:

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

示例 2:

输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]

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

2.思路与代码

2.1 思路

1.先判断数组是否为空,或者数组长度是否为0

2.创建与输入数组长度一致的数组

3.计算当前元素左边的所有元素乘积(不包含当前元素)

4.计算当前元素右边的乘积

5.左边与右边相乘就是所有元素的乘积

2.2 代码

代码如下(示例):

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

        //判断条件
        if(nums == null || nums.length == 0){
            return nums;
        }

        //输出数组
        int[] arr = new int[nums.length];

        arr[0] = 1;

        for(int i = 1;i < arr.length;i ++){
            arr[i] = nums[i - 1] * arr[i - 1];

        }

        int right = 1;

        for(int i = nums.length - 1;i >= 0;i --){
            arr[i] *= right;
            right *= nums[i];
        }



        return arr;
    }
}


总结

提示:这里对文章进行总结:
 

你可能感兴趣的:(java练习,java,leetcode,数据结构)