构建乘积数组

66. 构建乘积数组 忽略答案数组的空间消耗,空间复杂度。,表示当前元素左边所有元素的乘积,初始时。,表示当前元素右边所有元素的乘积,初始时。接下来,我们从左到右遍历数组。然后,我们从右到左遍历数组。以外的元素的积, 即。我们先创建一个长度为。,过程中维护一个变量。,过程中维护一个变量。 阅读详情
题目:
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。

分析:
1.如果可以使用除法,最直观的方法就是使用连乘来得到B[i]。这样的方法时间复杂度为O(n2).
2.结合矩阵知识来解决这个问题。

2.结合矩阵知识

时间复杂度为O(n)的算法。

class Solution
{
public:
    vector<int> multiply( const vector<int>& A )
    {
        vector<int> B( A.size() );

        int length1 = A.size();
        int length2 = B.size();

        if ( length2 > 1 )
        {
            B[0] = 1;
            for ( int i = 1; i < length1; ++i )
            {
                B[i] = B[i-1] * A[i-1];
            }
            double temp = 1;
            for ( int i = length1-2; i >= 0; --i )
            {
                temp *= A[i+1];
                B[i] *= temp;
            }
        }
        return B;
    }
};
Altium Designer20-柔性PCB绘制技巧 Altium Designer2020-柔性PCB绘制技巧 注:教程所用PCB随意找的,并没有完全绘制完,大家学习PCB折弯方法即可。 1.打开PCB,点击视图->板子规划模式1,如下图所示 2.点击设计->定义分割线,用两条分割线绘出要折弯的区域 3.点击设计->定义弯曲线(弯曲线呈现黄色) 4.用快捷键d,k进入layer manage stack(层叠管理器),在f... 阅读详情

相关推荐

信息隐藏 数字图像空域隐写与分析技术的实现

【代码】信息隐藏 数字图像空域隐写与分析技术的实现。

Yungoal的博客 470

52 构建乘积数组

题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。 最笨的方法: 如果能用除法的话,直接让A中所有数的乘积除以第i个数即可。不能的话就来次循环 import java.util.ArrayList; public class Solution { ...

Mr_Curious的博客 214

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

数组------构建乘积数组

题目描述: 给定数组A[n] = {0, 1, …, n-1},要求构建一个数组B[n],使得B[i] = A[0]A[1]…A[i-1]A[i+1]…A[n-1].并且不能使用除法. 分析: 若能使用除法,则B[i] = A[0]A[1]…A[n-1] / A[i].但由于不能使用除法,所以此方法不可行. 方法一: 可以使用蛮力方法,对每个B[i]都重新乘一遍,从而得到结果,复杂度是O(n

风月冷 399

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 510

告别复杂配置:利用原生DDNS实现IPv6直连群晖的极简指南

本文详细介绍了如何利用原生DDNS实现IPv6直连群晖NAS的极简方法,告别复杂配置。从检查IPv6网络环境、路由器防火墙设置到群晖DDNS配置,一步步指导用户完成设置,并分享移动网络下的使用体验和安全防护建议,帮助用户轻松实现远程访问。

weixin_30918633的博客 414

C解决构建乘积数组

给定一个数组 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]。不能使用除法。 leetcode上面提供了一种非常精妙的算法,空间复杂度为n int* constructArr(int* a, int aSize, int* returnSize){ int *arr = NULL; int i, temp; if

weixin_44910502的博客 181

13.0 针对跳转不存在Activity崩溃处理,改成弹Toast提示,去掉崩溃弹窗,避免app崩溃退出

在开发过程中,在app跳转到某个没注册的Acitivity时,往往会出现崩溃的场景,这样也不好,接下来就从framework中来拦截这个崩溃,改成toast提示,

安卓兼职framework和app工程师的博客 49

剑指 Offer 66. 构建乘积数组

题目: 剑指 Offer 66. 构建乘积数组 题解: 1. 题解一:左右数组 解释一: 解释二: 2. 题解二:左(或右)数组 解释一: 解释二: 代码: 1. 代码一:左右数组 public class 面试题66 { // 方法1:左右数组 public static int[] constructArr(int[] a) { if(a == null || a.length == 0) { return

dev_zyx的博客 531

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 373

CODESYS数据处理合集(高低字节/ 字/浮点数/位)

VAR_INPUT//字节0//字节1END_VARVAREND_VAR。

RXXW_Dor的博客 356

JZ51 构建乘积数组

题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];) 对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。 思路 读题,理解数组B的规律,发现B[ i ]即i的位置A[i]不存在。也可以理解为1。 不能使用除法。即

了凡 2184

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【数组】构建乘积数组

题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 思路分析 B[i]的值可以看作下图的矩阵中每行的乘积。 下三角用连乘可以很容求得,上三角,从下向上也是连乘。 因此我们的思路就很清晰了,先算下三角中的连乘,即我们先算出B...

永生只是一场幻梦 2790

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

剑指 Offer 66——构建乘积数组

题目连接:https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/ 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 输入: [1,2,3,4,5] 输出: [120,60,40,30,24] 解题过程 题目意思是:B[i]的值是a中出去i位置的值的乘积 先求 i 左侧的乘积值,存入

学而不思则忘 467

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

《剑指offer》构建乘积数组

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:http://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/que

月下的寂寞肖邦 1869

数组之构建乘积数组

1.本题知识点    数组,规律 2. 题目描述   给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。 3. 思路    由题目可画出如图乘积矩阵,B不包含对角线元素(即A[i]),所以,分别求出左右三角的规律公式,拼起来就是B的公式。    问题1:为什么C是自顶向...

守得云开见月明 394
上一篇: 数组中重复的数字
下一篇: 正则表达式匹配
Findway_
博客等级 码龄10年 36粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值