首页 > 其他分享 >剑指 Offer 66. 构建乘积数组

剑指 Offer 66. 构建乘积数组

时间:2023-11-10 12:36:18浏览次数:38  
标签:right 乘积 Offer res len 66 数组 left



文章目录

  • 题目描述
  • 思路分析
  • 完整代码


题目描述

给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。

思路分析

将所有的数都乘起来得到一个总乘积,然后求第i位就直接除以i就行了,不过可惜了题目要求不能使用除法。

对于i位的数来讲,其值等于0到i-1的乘积,乘以 i+1到末尾的乘积。看下图。

剑指 Offer 66. 构建乘积数组_数组


所以建立两个数组,一个left,一个right,分别存储每个位置的左边乘积和右边乘积(不包含该位置)

比如示例: [1,2,3,4,5]
则其left = [1, 1,2, 6, 24]
right = [120 , 60 , 40 , 30 , 24]

在设置一个存答案的数组res,自然有 :res[i] = left [i] * right[i]

完整代码

class Solution:
    def constructArr(self, a: List[int]) -> List[int]:
        res = [1] * len(a)
        left = [1] * len(a)
        right = [1] * len(a)

# 当前元素左边的乘积
        for i in range(1,len(a)):
            left[i] = left[i-1] * a[i-1]
# 当前元素右边的乘积
        for i in range(len(a)-2,-1,-1):
            right[i] = right[i+1] * a[i+1]
# 逐个遍历每个位置的左右乘积的乘积就是我们要的答案
        for i in range(len(a)):
            res[i] = left[i]*right[i]

        return res 


        ```


标签:right,乘积,Offer,res,len,66,数组,left
From: https://blog.51cto.com/u_15849381/8295554

相关文章

  • 重磅!大厂2023最新全套面试题,简直就是拿Offer的神器
    前言大厂的面试一直都是风向标,动态必须关注!想要高效迅速的拿到心仪的offer,一定要从面试官的角度出发,提前做好功课,了解市场的最新风向。我在和几位大佬详细沟通之后,终于整理出了这份最新的《2023Android面试收割指南》,内容涵盖各大厂最新面试题合集,部分题目还是有点难度的,希望大家能......
  • 分享2023全新GO工程师面试总攻略,助力快速斩获offer
    点击下崽:分享2023全新GO工程师面试总攻略,助力快速斩获offer  提取码:k8c8GO(Golang)是一种快速、高效、牢靠、平安的编程言语,被普遍应用于后端开发、云计算、人工智能等范畴。在GO工程师面试中,面试官通常会调查我们的编程才能、系统设计才能、算法和数据构造等方面的学问。本文将引......
  • 什么样的 Offer 才是好 Offer?
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!随着社会的发展和教育水平的提高,越来越多的学生在毕业后迎来了他们职业生涯的起点。作为应届生,一个好的Offer对于他们来说至关重要。那么,什么样的Offer才能称之为好Offer......
  • 什么样的 Offer 才是好 Offer?
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!随着社会的发展和教育水平的提高,越来越多的学生在毕业后迎来了他们职业生涯的起点。作为应届生,一个好的Offer对于他们来说至关重要。那么,什么样的Offer才能称之为好......
  • 最大单词长度乘积
    题目概述:给你一个字符串数组words,找出并返回length(words[i])*length(words[j])的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回0。解题思路1:暴力做法+小优化。直接两重循环枚举所有组合,再写一个函数判断两个字符串是否含有相同字符。时间复杂度:\(......
  • MTK联发科MT8766/MT8166安卓核心板性能参数对比
    MT8766核心板采用联发科四核2G主频芯片方案,国内4G全网通。12nm先进工艺,支持Android9.0系统。GPU采用超强IMGGE8300,主频600MHz。支持高速LPDDR4/X,主频高达1600MHz。支持EMMC5.1。标配WIFI802.11ac/abgn,BT5.0。支持主流音视频格式和图片的解码。接口丰富,单/双路LVDS......
  • 无限乘积拓扑
      还有关于无限乘积部分,大多数书上直接给出乘积空间中开集的样子。其中有限也不知道如何而来。而且Munkres上的解释与符号过于复杂。  \(\left\{X_i\right\}_{i\inI}\)是一族集合,一个映射\(x:I\rightarrow\bigcup\limits_{i\inI}{X_i}\)称为一个选择函数,若对于每个......
  • 拿了 Offer 的应届生都在干嘛
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!十一月差不多就是各大企业正式发出Offer的时候了。相信收到Offer确认的时候,都是非常快落的!那拿了Offer后,在等待入职期间,大家都干些啥?01放松身心拿到心仪的Offer,是每位......
  • 拿了 Offer 的应届生都在干嘛
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!十一月差不多就是各大企业正式发出Offer的时候了。相信收到Offer确认的时候,都是非常快落的!那拿了Offer后,在等待入职期间,大家都干些啥?01放松身心拿到心仪的Off......
  • 【工作01】某科研院所 - 3500每月 - offer - 拒
    经历  导师推荐的一家单位。  跟我说的好听。说什么就开始的半年(6个月实习期)难捱,之后每个月工资(底薪+绩效)比学校发给他的还高。  这里需要先说明一下我所在大学的教师工资。经历过一次工资发放改革,现在绩效平摊到了每一个月里,他一个月的工资到手大概是9000左右,五险一金......