题解 | #构建乘积数组#

构建乘积数组

http://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46

描述

给定一个数组 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] 以外的全部元素的的乘积)。
程序中不能使用除法。(注意:规定 B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2])
对于 A 长度为 1 的情况,B 无意义,故而无法构建,用例中不包括这种情况。


示例1

输入:[1,2,3,4,5]
返回值:[120,60,40,30,24]

示例2

输入:[100,50] 返回值:[50,100]


解法:置1法

  • 定义双层循环 i j
  • 由题意知道,当前元素A[ i ] 不参与乘积,所以可以把它置为1
  • 然后跳过A[j] 即 i==j 时不做处理

alt

import java.util.ArrayList;
public class Solution {
    public int[] multiply(int[] A) {

        // 1. 构建返回的数组
        int [] res = new int[A.length];
        // 2. 遍历
        for (int i = 0; i < A.length; i++) {
            // 3.当前元素置为1
            res[i]=1;
            for (int j = 0; j < A.length; j++)
                // 4. i!=j  时候,构建乘积
                if (i != j) {
                 res[i] = res[i] * A[j];
                } 
        }
        return res;
    }
}
全部评论

相关推荐

风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务