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

除自身以外数组的乘积

时间:2024-11-16 12:18:13浏览次数:3  
标签:right 乘积 nums int length 数组 answer 以外 left

力扣链接:. - 力扣(LeetCode)

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

java代码如下:

public class Solution {
    public int[] productExceptSelf(int[] nums) {
        //左边和右边的乘积列表
        int[] right = new int[nums.length];
        int[] left = new int[nums.length];
        int[] answer = new int[nums.length];
        //左边的
        left[0] = 1;
        for (int i = 1; i < nums.length; i++) {
            left[i] = left[i - 1] * nums[i - 1];
        }
        right[nums.length - 1] = 1;
        for (int i = nums.length - 2; i >= 0; i--) {
            right[i] = right[i + 1] * nums[i + 1];
        }
        for (int i = nums.length - 1; i >= 0; i--) {
            answer[i] = left[i] * right[i];
        }
        return answer;
    }
}

 

 

标签:right,乘积,nums,int,length,数组,answer,以外,left
From: https://blog.csdn.net/weixin_44331433/article/details/143815116

相关文章

  • 树状数组的两种写法
    首先是下标从\(1\simn\),使用\(lowbit(x)=x\&\–x\)template<typenameT>classFenwick{public:vector<T>fenw;intn;Fenwick(int_n):n(_n){fenw.resize(n+1);}voidmodify(intx,Tw){while(x<=n){......
  • 4. 寻找两个正序数组的中位数
    题目链接解题思路用双指针,或者辅助数组的方法这里就不过多解释了,现在说最优解。我们可以利用两个数组「有序」的特点,找到其中位数。直接举例子,假设其中一个数组nums1是[1,3,5,7,9],另一个数组nums2是[2,4,6,8],中位数我们先人工算出来,是5,也就是整体的第5小的数,也就......
  • 数组...
    2.1.1什么是数组,为什么要使用数组?java中存储数据的最小单元是变量,一个变量只能存储一个数据,如果需要存储大量的数据就需要使用大量的变量,因此需要一种新的数据类型能够存储大量数据的数据类型-数组数组-用来存储大量相同数据的集合。2.1.2如何使用数组?1)数组的初始化数据......
  • JavaScript常用对象方法二:数组(array)
    1.concat()用于连接两个或多个数组。该方法不会改变现有的数组,而是返回一个新的数组。个人感觉es6出来的扩展运算符比这个方法要简洁一些扩展运算符的方法:constarr1=[1,2];constarr2=[3,4];constarr3=[...arr1,...arr2];console.log(arr3);//[1,2,......
  • 旋转数组的最小数字
    题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{2,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.解题思路看到“递增数组”和“查找最小值”,就要想到二分法。有两种切割方法,一......
  • leetcode 数组专题 06-扫描线算法(Sweep Line Algorithm)
    扫描线专题leetcode数组专题06-扫描线算法(SweepLineAlgorithm)leetcode数组专题06-leetcode.218the-skyline-problem力扣.218天际线问题leetcode数组专题06-leetcode.252meetingroom力扣.252会议室leetcode数组专题06-leetcode.253meetingroomii力扣.253......
  • C语言:数组(一维数组,二维数组,数组越界,数组作为函数参量,冒泡排序)
    1、一维数组的创建和初始化1.1、数组的创建数组是相同类型元素的集合•数组中可以存放1个或者多个数据•数组中存放的数据,类型是相同的数组的创建方式:元素类型自定义数组名(常量表达式)比如:intarr[10]doublearr[5]chararr[8+5]错误写法:intarr[n];......
  • 代码随想录:有序数组的平方
    代码随想录:有序数组的平方仍然是双指针,一开始也想到了双指针,不过很笨的创造了两个数组,一个负数的一个正数的,两个数组比大小后插入。但其实可以直接把原数组平方后,从左右两边插入。有两点值得注意:1.已知数组大小的情况下,可以直接倒着插入数组。2.创建vector时需要指定元素的个数......
  • 郝玩的数据结构2——树状数组(待upd)
    首先,拉张图树状数组,相对于线段树来说,空间复杂度更小,但是可以处理的信息具有局限性常用于处理区间(矩阵)查改(差分转化为单点查改),单点查改板子题1Accode:点击查看代码#include<bits/stdc++.h>#definelowbitx&-xusingnamespacestd;intn,m,s[500005];voidchange(intx......
  • Java 数组操作:反转、扩容与缩容
    在Java中,数组是一种固定长度的数据结构,一旦创建,其大小无法更改。然而,常常在实际编程中,我们需要对数组进行扩容、缩容或其他操作。本文将介绍如何通过Java实现数组反转、扩容和缩容的操作,并在代码中演示这些常见的数组操作。1.数组反转数组反转是一个常见的操作,通常用于......