首页
学习
活动
专区
工具
TVP
发布

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

1.问题描述 给你一个整数数组 nums,返回数组 answer ,其中 answer[i] 等于 nums 中 nums[i] 之外其余各元素乘积 。...可以先计算给定数组所有元素乘积,然后对数组中每个元素 x,将乘积除以 x 求得自身值以外数组乘积。 然后这样解决方法有一个问题,就是如果输入数组中出现 0,那么这个方法就失效了。...时间复杂度: O(n^2),需要两层遍历,第一层为遍历数组中每一个元素,第二层是遍历数组中当前元素其他所有元素。 空间复杂度: O(1)。...对于给定索引 i,L[i] 代表是 i左侧所有数字乘积,R[i] 代表是 i 右侧所有数字乘积。 我们需要用两个循环来填充 L 和 R 数组值。...自身以外数组乘积 - LeetCode

10610
您找到你想要的搜索结果了吗?
是的
没有找到

自身以外数组乘积

题目: 给你一个长度为 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

30020

自身以外数组乘积

题目 给你一个长度为 n 整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中 nums[i] 之外其余各元素乘积。...示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 提示:题目数据保证数组之中任意元素全部前缀元素和后缀(甚至是整个数组)乘积都在 32 位整数范围内。...对于给定索引 i,L[i] 代表是 i 左侧所有数字乘积,R[i] 代表是 i 右侧所有数字乘积。 我们需要用两个循环来填充 L 和 R 数组值。...预处理 L 和 R 数组以及最后遍历计算都是 O(N) 时间复杂度。 空间复杂度:O(N),其中 N 指的是数组 nums 大小。...空间复杂度:O(1),题目中所述,返回数组空间不算,故所使用额外存储空间为 left 和 right。故只有常数级别的空间复杂度。

31810

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

# LeetCode-238-自身以外数组乘积 题目来自于力扣https://leetcode-cn.com/problems/product-of-array-except-self 给你一个长度为...n 整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中 nums[i] 之外其余各元素乘积。...# 解题思路 我们先假设可以使用除法,那么解题思路可以为,先计算出所有元素连续乘积,然后利用最后一个位置总乘积除以当前元素本身值就可以得到结果,但是这种情况没有考虑除数为0情况,且由于题目不允许使用除法...*方法1、乘积结果=当前数左边乘积(前缀)当前数右边乘积(后缀) 由于结果值为当前值之外乘积,所以可以利用2个数组来记录当前值左侧乘积和当前值右侧乘积,两个乘积结果再进行一次对应位置相乘即为排除当前位置数所有元素乘积...从右侧动态计算后缀原理和计算前缀原理类似,而此时我们res为前缀积,在一次循环中,我们可以使用前缀积和动态计算后缀积相乘得到最终结果。

33010

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

题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中 nums[i] 之外其余各元素乘积 。...题目数据 保证 数组 nums之中任意元素全部前缀元素和后缀乘积都在 32 位 整数范围内。 请不要使用除法,且在 O(n) 时间复杂度内完成此题。...,可以通过计算该索引下左边和右边乘积之和相乘即可。...首先遍历题给数组nums,分别计算题中数组每个索引左边所有数乘积和右边所有数乘积,放入两个数组L和R中,然后再新建一个数组result,对数组result进行一次遍历,数组result中每个索引处值等于数组...,L第一个值为1,R最后一个值为1 L[0] = 1; R[nums.length-1] = 1; //填充L数组,即每个索引处左边乘积数组,第一个索引处值已经设置

10810

自身以外数组乘积

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

22620

leetcode刷题(118)——自身以外数组乘积

给你一个长度为 n 整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中 nums[i] 之外其余各元素乘积。...题解: 我们不必将所有数字乘积除以给定索引处数字得到相应答案,而是利用索引左侧所有数字乘积和右侧所有数字乘积(即前缀与后缀)相乘得到答案。...对于给定索引 i,L[i] 代表是 i 左侧所有数字乘积,R[i] 代表是 i 右侧所有数字乘积。 2.我们需要用两个循环来填充 L 和 R 数组值。...- 2; i >= 0; i--) { R[i] = nums[i + 1] * R[i + 1]; } // 对于索引 i, nums[i...预处理 L 和 R 数组以及最后遍历计算都是 O(N) 时间复杂度。 空间复杂度:O(N),其中 N 指的是数组 nums 大小。

24620

【数据结构和算法】自身以外数组乘积

前言 这是力扣238题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙两种。...一、题目描述 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中 nums[i] 之外其余各元素乘积 。...根据题目对 ans[i] 定义,可列出下图所示表格。 根据表格主对角线(全为 1 ),可将表格分为 上三角 和 下三角 两部分。...计算 ans[i] 下三角 各元素乘积,直接乘入 ans[i] 。 计算 ans[i] 上三角 各元素乘积,记为 tmp ,并乘入 ans[i] 。 返回 ans 。...因此需要进行两次遍历,第一次遍历用于求左部分乘积,第二次遍历在求右部分乘积同时,再将最后计算结果一起求出来。

9110

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

,可以通过它偏移访问到原数组中不同元素 numsSize 是原数组长度(个数) *returnSize 是我们目标数组长度指针,因为0也会放入目标数组中,因此我们两个数组长度都是一样,这里直接赋值即可...计算左积    前面说过,我们需要求出各元素左积与右积,第一个元素左积为1,最后一个元素右积也为1。因此我们求左积过程可以分为三步:获取、存入、变化。...计算最终值  最终值计算很简单,无非就是两次求积值相乘,为了避免产生过多内存浪费,我们把计算最终值集成到了计算右积步骤中,思想为:目标数组中左积 * 计算出右积,然后存入数组中 效果...源码 下面是原码展示 //力扣 23.自身以外数组乘积 //左右互乘法 #include int* productExceptSelf(int* nums, int numsSize...自身以外数组乘积 - 力扣(LeetCode) 前面提到malloc标准相关网站为C Plus Plus,是一个国外网站,但访问速度不错,可惜全英文。

13110

2021-10-29:自身以外数组乘积。给你一个长度为

2021-10-29:自身以外数组乘积。...给你一个长度为 n 整数数组 nums,其中 n > 1,返回输出数组 output ,其中 outputi 等于 nums 中 numsi 之外其余各元素乘积。示例:输入: 1,2,3,4。...提示:题目数据保证数组之中任意元素全部前缀元素和后缀(甚至是整个数组)乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。...( 出于对空间复杂度分析目的,输出数组不被视为额外空间。)力扣238。 答案2021-10-29: 方法1:先遍历求后缀基,再遍历求前缀基。 方法2:分三种情况。 2.1.数组中无。...2.2.数组中有1个。除了值为0位置数是其他数积,其他位置是0。 2.3.数组中有2个。结果全。 时间复杂度:O(N)。 额外空间复杂度:O(1)。 代码用golang编写。

26910

java异常_JAVA异常处理

大家好,又见面了,我是你们朋友全栈君。 出bug是写代码时候非常常见情况,今天就来讲一下。...1.常见异常有以下几种: 1.System.out.println(1/0);//java.lang.ArithmeticException:/ by zero 除以结果无穷大异常 2.String...Throwable:java中所有的错误或异常 Error:程序无法处理异常 Exception:程序可以处理异常 RuntimeExption:运行时才会产生异常,编译时不会产生 ArithmeticException...:出现异常运算条件,比如除以 3.异常处理方式: 1.自己捕获处理 1) try-catch语法结构及链式结构多异常处理方式 Ø语法: try{ //可能产生异常代码 }catch(捕获异常类型...e){//e是形式参数 //该异常捕获之后要做操作 }catch(捕获异常类型 e){//e是形式参数 //该异常捕获之后要做操作 }finally{ //异常发生之后一定会执行到语句块:

2.2K20

【睡前碎语】技术以外

这哥们最大特点是玄学中玄学,用起来确实效果拔群,讲原理吧也不难,就是一左一右俩现成深度模型套了个博弈论框架。可为什么套了个博弈论框架效果就能拔群呢?...既然应用篇还得回炉重修,其中一个不吐不快的话题干脆单拎出来先说了。题目可以起很学术,加一点公号轰动风的话不妨叫《论机器学习技术发展对人类伦理反噬》。 简单来说,技术不再只是技术事儿了。...机器学习未来科技树点歪了,可不只是学界责任,在座各位都得反思。 反思什么呢?反思正经技术是怎样被用户玩坏。...Yann LeCun意思很简单,PULSE就是个缺心眼傻孩子,一张白纸,只会照猫画虎,你喂白人照片多,吐出来照片当然更像白人。当然,也不存在啥偏见。...总而言之,AI还不具备形成“偏见”能力。 不过,大家不BUY这套解释,毕竟道理倒不一定都懂,但PULSE“偏见”都能看见,连一些机器学习研究人员也站起来说样本偏差不也是偏见体现吗?

21410
领券