首页 > 其他分享 >除自身以外数组的乘积

除自身以外数组的乘积

时间:2024-11-21 09:32:10浏览次数:1  
标签:乘积 nums int length num 数组 以外

除自身以外数组的乘积

题目

给你一个整数数组 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]

思路

  • 不使用除法在O(n)时间复杂度完成此题,可以多次遍历数组
  • 可以使用两个数组,一个L,一个R,L[i],就代表num[0]到num[i-1]的乘积,L[i] = L[i - 1] * num[i -1],R[i]代表 num[i + 1] 到num[num.length - 1]的乘积,这样answer[i] = L[i] * R[i]

代码实现

public int[] productExceptSelf(int[] nums) {
    int[] L = new int[nums.length];
    int[] R = new int[nums.length];
    L[0] = 1;
    R[nums.length - 1] = 1;
    for (int i = 1; i < nums.length; i++) {
        L[i] = L[i - 1] * nums[i - 1];
    }
    for (int i = nums.length - 2; i >= 0; i-- ) {
        R[i] = R[i + 1] * nums[i + 1];
    }

    int[] result = new int[nums.length];
    for (int i = 0; i < nums.length; i++) {
        result[i] = L[i] * R[i];
    }
    return result;

}

标签:乘积,nums,int,length,num,数组,以外
From: https://www.cnblogs.com/wwgroup/p/18559918

相关文章

  • 5.C语言数组(上)
    文章目录一、数组的概念二、一维数组的创建和初始化2.1数组的创建2.2数组的初始化2.3数组的类型三、一维数组的使用3.1数组下标3.2数组元素的打印3.3数组的输入四、一维数组在内存中的存储五、sizeof计算数组元素的个数六、二维数组的创建6.1二维数组的概念6.2......
  • C语言:数组的学习
    1.什么是数组?数组是一组相同类型元素的集合。数组可以存储1个或多个数据。数组中存储的数据的类型是相同的。数组分为一维数组和多维数组。变量和数组都是容器,变量只能存储一个数据,数组可以存储多个。2.一维数组创建和初始化存放在数组中的数据叫做数组的元素。数组是自......
  • 简单的在数组的特定位置插入数字
    特别简单啊就是要判断好循环次数,实在判断不出来就一个一个数呗然后就是要想到比较完大小,接着输出应该往后延续一个,不然就重叠了#include<stdio.h>intmain(){inta[10];//先定义数组数组有9个元素inti,num,j;//定义各种变量备用//读取数组,其实我......
  • Java小练(数组)
    题目要求:给你一个整数数组“arr”,请你判断数组中是否存在连续三个都是奇数的情况:如果存在请返回“true”;否则返回“false”1.导入要用到的scanner库importjava.util.Scanner;2.获取输入的数据importjava.util.Scanner;publicstaticText_11_19_3{publicstati......
  • 轮转数组
    轮转数组题目给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。示例示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例......
  • Scala之Array数组
     可修改的Arrayimportscala.collection.mutable.ArrayBuffer//Array:数组//可修改的:ArrayBuffer//不可修改的:ArrayobjectTest1{//可修改的:ArrayBufferdefmain(args:Array[String]):Unit={//1.新建valarr1=ArrayBuffer(1,2,3)//2.添加......
  • 0基础勇闯C语言(2) 数组
    数组可分为数值数组,字符数组,指针数组,结构体数组。一,一维数组1,一维数组的命名inta[5]={1,2,9,23,8};(数组下标范围是0-n-1)2,一维数组的应用冒泡排序和选择排序二,二维数组1,二维数组的命名(2种)inta[2][3]={{1,2,3},{4,5,6}};inta[2][3]={1,2,3,4,5,6};2,二维数组的理解......
  • 2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻
    2024-11-20:交替子数组计数。用go语言,给定一个二进制数组nums,如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。请返回数组nums中交替子数组的总数。输入:nums=[0,1,1,1]。输出:5。解释:以下子数组是交替子数组:[0]、[1]、[1]、[1]以及[0,1]。......
  • PHP二维数组排序算法函数
    以使用PHP内置的array_multisort()函数来对二维数组进行排序。array_multisort()函数可以对多个数组或多维数组的一个或多个列进行排序。下面是一个示例函数,该函数可以对二维数组按指定列进行排序:<?phpfunctionsort2DArrayByColumn(&$array,$columnKey,$sortOrder=SORT_......
  • 洛谷题单指南-二叉堆与树状数组-P2161 [SHOI2009] 会场预约
    原题链接:https://www.luogu.com.cn/problem/P2161题意解读:本题前面形式化描述已经足够清晰。解题思路:要判断线段之间是否有冲突(包含或者交叉),可以借助set,参考:https://www.cnblogs.com/jcwy/p/18447333只不过这里要统计冲突的数量,也就是允许相等的元素重复存在,可以借助multiset......