本文主要是介绍Java解决除自身以外数组的乘积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java解决除自身以外数组的乘积
01 题目
-
给你一个整数数组
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]
提示:
2 <= nums.length <= 105
-30 <= nums[i] <= 30
- 保证 数组
nums
之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内
02 知识点
- 动态规划
- 数组
- 循环
03 我的题解思路
public class productExceptSelf1 {public static void main(String[] args) {
// 测试数据int[] nums= {1,2,3,4};System.out.println(productExceptSelf(nums));}public static int[] productExceptSelf(int[] nums) {int n=nums.length;//数组长度int[] answer=new int[n];//答案数组int[] left=new int[n];//索引为i处,left[i]的值为左边的乘积int[] right=new int[n];//索引为i处,right[i]的值为右边的乘积left[0]=1;//最左边索引,左边为空,乘积默认为1right[n-1]=1;//最右边索引,右边为空,乘积默认为1int j=n-2;//右边从第二个开始循环for (int i = 1; i < n; i++) {//循环n-1次left[i]=nums[i-1]*left[i-1];//左边的乘积right[j]=nums[j+1]*right[j+1];//右边的乘积j--;//右指针左移}for (int i = 0; i < n; i++) {
// 返回值为索引为i处左边与右边乘积answer[i]=left[i]*right[i];}return answer;}}
这篇关于Java解决除自身以外数组的乘积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!