首页 > 其他分享 >leetcode 238

leetcode 238

时间:2024-05-25 19:11:22浏览次数:19  
标签:乘积 nums postfix prefix 238 计算 output leetcode

思路

如果想要不用除法运算,计算i位置上的结果时,需要i前面所有的乘积,和i后面所有的乘积。分别用两个数组存储,并计算顺序以及逆序的乘积:
image
这样只需要遍历三遍就可以求得结果。

如果想要节省空间,可以把前缀乘积和后缀乘积计算结果直接放到相应位置的output上面。
第一遍存储上前缀乘积,其中i位置放i之前的乘积,即可以先放上output再计算prefix *= nums[i]
image
第二遍计算后缀乘积,倒序计算,直接更新到output上:
image

代码

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        n = len(nums)
        prefix, postfix = 1, 1
        output = [1] * n
        for i in range(n):
            output[i] = prefix
            prefix *= nums[i]
        for j in range(n - 1, -1, -1):
            output[j] *= postfix
            postfix *= nums[j]

        return output

标签:乘积,nums,postfix,prefix,238,计算,output,leetcode
From: https://www.cnblogs.com/someonefake/p/18212893

相关文章

  • leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表
    文章目录前言一、移除链表元素二、链表的中间节点三、合并两个有序链表四、反转链表五、链表分割六、倒数第k个节点七、链表的回文结构八、相交链表九、判断链表是否有环十、判断环形链表的入口点十一、随机链表的复制总结前言leetcode以及牛客网单链表相关的题、移......
  • 代码随想录——二叉树的所有路径(Leetcode257)需要回顾
    题目链接BFS+队列维护一个队列,存储节点以及根到该节点的路径。一开始这个队列里只有根节点。在每一步迭代中,我们取出队列中的首节点,如果它是叶子节点,则将它对应的路径加入到答案中。如果它不是叶子节点,则将它的所有孩子节点加入到队列的末尾。当队列为空时广度优先搜......
  • LeetCode 283. Move Zeroes All In One
    LeetCode283.MoveZeroesAllInOnearrayin-placeswap/数组就地交换算法errorsfunctionmoveZeroes(nums:number[]):void{//in-place就地交换letindex=0;//letflag=false;for(leti=0;i<nums.length;i++){if(nums[i]===0){......
  • 【LeetCode】【5】最长回文子串
    文章目录@[toc]题目描述样例输入输出与解释样例1样例2提示Python实现动态规划个人主页:丷从心·系列专栏:LeetCode刷题指南:LeetCode刷题指南题目描述给一个字符串s,找到s中最长的回文子串样例输入输出与解释样例1输入:s="babad"输出:"bab"解释:"aba"同样是......
  • leetcode刷题
    文章目录前言两数之和1️⃣暴力for循环2️⃣解法23️⃣构建哈希表两数相加1️⃣链表→......
  • 1-数组-11-二分查找-LeetCode704
    1-数组-11-二分查找-LeetCode704参考:代码随想录LeetCode:题目序号35更多内容欢迎关注我(持续更新中,欢迎Star✨)Github:CodeZeng1998/Java-Developer-Work-Note技术公众号:CodeZeng1998(纯纯技术文)生活公众号:好锅(Lifeismorethancode)博客园:CodeZeng1998其他平台:CodeZeng19......
  • Leetcode 力扣97. 交错字符串 (抖音号:708231408)
    给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s=s1+s2+...+snt=t1+t2+...+tm|n-m|<=1交错 是 s1+t1+s2+t......
  • Leetcode-152 乘积最大子数组
    Leetcode-152乘积最大子数组题目描述示例1:示例2:解题思路一种错误的解题思路正确的思路(一)C++代码正确的思路(二)C++代码题目描述给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例1:输入:......
  • LeetCode Greatest Common Divisor of Strings All In One
    LeetCodeGreatestCommonDivisorofStringsAllInOneLeetCode1071errorsfunctiongcdOfStrings(str1:string,str2:string):string{letresult=``;lettemp=[];if(str1.length>str2.length){letreg=newRegExp(str2,'g'......
  • 【LeetCode】59. 螺旋矩阵 II
    题目:59.螺旋矩阵II解题思路手动模拟螺旋矩阵,分别实现四个方向的代码,将数组依次填入数组中即可需要注意的是,如果n为奇数,说明最后只剩下中间的一个位置,将最后一个数直接填入即可;若n为偶数,则正好能够遍历n/2遍classSolution{publicint[][]generateMatrix(intn){......