首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    自身以外数组的乘积(LeetCode 238)

    1.问题描述 给你一个整数数组 nums,返回数组 answer ,其中 answer[i] 等于 nums 中 nums[i] 之外其余各元素的乘积 。...可以先计算给定数组所有元素的乘积,然后对数组中的每个元素 x,将乘积除以 x 求得自身值以外的数组乘积。 然后这样的解决方法有一个问题,就是如果输入数组中出现 0,那么这个方法就失效了。...时间复杂度: O(n^2),需要两层遍历,第一层为遍历数组中的每一个元素,第二层是遍历数组当前元素的其他所有元素。 空间复杂度: O(1)。...由于输出数组不算在空间复杂度内,那么我们可以将 L 或 R 数组用输出数组来计算。先把输出数组当作 L 数组来计算,然后再动态构造 R 数组得到结果。...自身以外数组的乘积 - LeetCode

    14210

    自身以外数组的乘积

    题目: 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中 nums[i] 之 外其余各元素的乘积。...示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。...( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)...Related Topics 数组 前缀和 二.思路: 把当前数组分成数字左边和数字右边两个部分 然后进行两次遍历 第一次遍历求出当前数字左边数字的积 第二次遍历求出当前数字右边数字的积 注意,好好利用一个初始乘积为...1,然后左边的积就从左边开始,右边的积是用右边开始 参考如下 原数组: [1 2 3 4] 左部分的乘积: 1 1 1*2

    33020

    自身以外数组的乘积

    题目 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中 nums[i] 之外其余各元素的乘积。...既然是算除了自己之外的累乘,便可以以当前所在位置为分割,分别计算左侧元素乘积 和 右侧元素乘积,之后再进行相乘。...当 R 和 L 数组填充完成,我们只需要在输入数组上迭代,且索引 i 处的值为:L[i] * R[i]。...预处理 L 和 R 数组以及最后的遍历计算都是 O(N) 的时间复杂度。 空间复杂度:O(N),其中 N 指的是数组 nums 的大小。...使用了 L 和 R 数组去构造答案,L 和 R 数组的长度为数组 nums 的大小。 算法二:共享数组方式 整体思路和官方解题思路相同:左乘*右乘。

    34310

    LeetCode-238-自身以外数组的乘积

    # LeetCode-238-自身以外数组的乘积 题目来自于力扣https://leetcode-cn.com/problems/product-of-array-except-self 给你一个长度为...n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中 nums[i] 之外其余各元素的乘积。...*方法1、乘积结果=当前数左边的乘积(前缀)当前数右边的乘积(后缀) 由于结果的值为当前值之外的乘积,所以可以利用2个数组来记录当前值左侧的乘积和当前值右侧的乘积,两个乘积结果再进行一次对应位置相乘即为排除当前位置数的所有元素乘积...方法2、进阶优化: 题目规定存储答案的数组不算空间,所以进阶方法尝试能不能用一个答案数组就可以完成上面三个数组的操作。...我们可以发现,res数组其实在最后一轮才使用,所以我们很自然的想到res可以直接替换掉leftDot数组,用res数组乘以rightDot一样能够得到结果,节省了leftDot前缀数组的空间,但是这仍然使用到了

    37010

    01—自身以外数组的乘积【LeetCode238】

    题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中 nums[i] 之外其余各元素的乘积 。...首先遍历题给数组nums,分别计算题中数组的每个索引的左边的所有数的乘积和右边所有数的乘积,放入两个数组L和R中,然后再新建一个数组result,对数组result进行一次遍历,数组result中每个索引处的值等于数组...最后返回结果数组result。...,L的第一个值为1,R的最后一个值为1 L[0] = 1; R[nums.length-1] = 1; //填充L数组,即每个索引处左边的乘积的数组,第一个索引处的值已经设置...for(int i=1;i< nums.length;i++){ L[i] = nums[i-1]*L[i-1]; } //填充R数组,即每个索引处右边的乘积的数组

    12710

    自身以外数组的乘积

    一、题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中 nums[i] 之外其余各元素的乘积 。...题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。 请不要使用除法,且在 O(n) 时间复杂度内完成此题。... nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内 三、解题思路 根据题目要求,我们需要计算出数组nums中,每个元素自己之外的乘积值,即假设nums包含4个元素,分别为nums...进行计算操作: 【正向遍历数组】 这种遍历方式,我们可以来计算左下角的数字乘积; 【逆向遍历数组】 这种遍历方式,我们可以来计算右上角的数字乘积(用temp保存),然后与左下角再执行相乘操作; 好了,如上就是本题的解题思路了...nums[i+1];         }         return result;     } } 图片 今天的文章内容就这些了: 写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的

    27820

    解析python 中 和 % 和 (地板

    python / 和 % 和 //(地板)用于对数据进行除法运算。 python中 // 和 / 和 % 简介 python中与除法相关的三个运算符是// 和 / 和 %,下面逐一介绍。...“/”,这是传统的除法,3/2=1.5 “//”,在python中,这个叫“地板”,3//2=1 “%”,这个是取模操作,也就是区余数,4%2=0,5%2=1 Python中分为3种除法:1、/,...两个整数相除,返回整数 5 % 2 1 两个整数恰好相除,返回0 6 % 3 0 3、 // // 称为地板,两个整数的除法仍然是整数,它总是会舍去小数部分,返回数字序列中比真正的商小的,最接近的数字...的时候不同而已;% 是求余数,// 是求商 PS:下面在看下python的地板有什么区别吗?...// 和 / 非常小的细节 100/2 Out[3]: 50.0 100//2 Out[4]: 50 到此这篇关于解析python 中/ 和 % 和 //(地板)的文章就介绍到这了,更多相关

    24.2K32

    Python 千题 —— 基础篇】地板计算

    输出描述 程序将计算这两个数字的地板结果,并输出结果。...计算两个数字的地板结果: 我们将这两个整数相除,使用地板运算符 //,将结果存储在变量 result 中。...当程序运行时,它将等待用户输入两个整数,然后计算并输出这两个数字的地板结果。 这个习题涵盖了前面提到的知识,包括输入、数据类型转换、整数除法运算和使用 print() 函数来输出结果。...相关知识 这个Python编程习题涉及了以下主要知识: input函数: input() 是Python中的内置函数,用于从用户处读取输入。它将等待用户在控制台中输入数据,并返回用户输入的内容。...result = num1 // num2 print函数: print() 是Python中用于将文本或变量的值输出到控制台的关键字。

    20040

    LeetCode每日一题之 自身以外数组的乘积

    . - 力扣(LeetCode) 算法原理: 这道题其实和我上一道题非常相似---寻找数组的中心下标,也是使用前缀和的思想,而这里需要改用前缀积: 所以我们创建前缀积数组f,后缀积数组g: f[i]表示...nums数组(0~(i-1))所有元素的积。...(自身外的前缀积)f[i]=f[i-1]*nums[i-1] g[i]表示nums数组((i+1)~(n-1))所有元素的积。...(自身外的后缀积) g[i]=g[i+1]*nums[i+1] 特殊位置处理: f[0]和g[n-1],这两个位置要特殊处理一下,f[0]表示数组nums 0号位之前元素的积,可它之前没有元素,之前题目前缀和时我们都将它置为...0,但这里不同,如果还是置为0的话,因为0乘任何数都是0,就会导致整个前缀积数组都变成0,所以为了不让它对后面的元素产生影响,我们应该把它置为1,g[n-1]同理。

    6910

    数组知识总结

    数组的基本知识  注意:数组类型是int[常量],数组元素类型才是int c99标准之前数组的大小只能是常量指定,不能使用变量 c99之后为什么就使用变量呢?...---变长数组 变长数组:数组大小可以根据输入的变量决定其大小的数组--如下 int n; scanf("%d",&n);  int array[n]; //%p-打印地址 #include<stdio.h...定义:将一维数组作为数组元素 ,二维数组的每一个元素是一维数组  二维数组的创建: 语法: type arr_name[常量1][常量2]; eg: int arr[3][5];---表示的是三行五列...int类型的二维数组,arr是数组名可以自己取 如何进行初始化: 元素按照行的个数进行排放,若有多则换行,若初始化不完全则会补0 如何按照行进行初始化: 因为二维数组的元素是一维数组所以只需要给里面元素加一个.... arr[0],arr[1],arr[2]可以看成是二维数组数组

    11910

    C语言题解——自身以外数组的乘积(力扣 第238题)

    下面来看看具体讲解吧: ---- 正文   前面提到过,我们需要得到左积与右积,已知第一个元素的左积为1,最后一个元素的右积也为1,随着元素的变化,积数也会发生变化,因此我们可以以此作为突破,当然我们要先创建一个数组...,可以通过它的偏移访问到原数组中不同的元素 numsSize 是原数组的长度(个数) *returnSize 是我们目标数组的长度指针,因为0也会放入目标数组中,因此我们的两个数组长度都是一样的,这里直接赋值即可...源码 下面是原码展示 //力扣 23.自身以外数组的乘积 //左右互乘法 #include int* productExceptSelf(int* nums, int numsSize...自身以外数组的乘积 - 力扣(LeetCode) 前面提到的malloc标准相关的网站为C Plus Plus,是一个国外网站,但访问速度不错,可惜全英文。...总的来说,这种方法属于一就通的那种,学习就是一个不断积累的过程,慢慢学嘛,如果看不懂,就多看几遍,实在看不懂可以换篇文章嘛,总会有学懂的时候。

    24110

    Python数组切片_python print数组

    文章目录 关于索引 一维数组(冒号:) 1、一个参数:a[i] 2、两个参数:b=a[i:j] 3、三个参数:格式b = a[i:j:s] 4、一个例子 二维数组(逗号,) 取元素...,是 python 最通用的复合数据类型。 关于索引 从左到右索引默认 0 开始,从右到左索引默认 -1 开始。...类似的,X[n0,n1,n2]表示取三维数组,取N维数组则有N个参数,N-1个逗号分隔。...21,22]]; 切片特殊情况 X[:e0,s1:] 特殊情况,即左边从0开始可以省略X[:e0,s1:e1],右边到结尾可以省略X[s0:,s1:e1],取某一维全部元素X[:,s1:e1],事实上和Python...blog.csdn.net/Arry_Lee/article/details/83108442 推荐博客:https://blog.csdn.net/qq_41375609/article/details/95027651 python

    2.4K10
    领券