题解 | #构建乘积数组#

构建乘积数组

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;
    }
}
全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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