LintCode题解 | 微软北京Azure面试真题:数组除了自

2020-02-10  本文已影响0人  SunnyZhao2019

微软Azure 电面第一题,LintCode原题,比较简单,关键testcase的时候举出0这种case就行。

【题目描述】

给定n个整数的数组nums,其中n> 1,返回一个数组输出,使得output [i]等于nums的所有除了nums [i]的元素的乘积。

【题目样例】

样例1
输入: [1,2,3,4]
输出: [24,12,8,6]
解释:
234=24
134=12
124=8
123=6

样例2
输入: [2,3,8]
输出: [24,16,6]
解释:
38=24
2
8=16
2*3=6

【评测与题解】

→戳这里在线评测及查看题解

/**
* 本参考程序来自九章算法,由 @九章算法助教团队 提供。版权所有,转发请注明出处。
* - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
* - 现有的面试培训课程包括:九章算法班,系统设计班,算法强化班,Java入门与基础算法班,Android 项目实战班,
* - Big Data 项目实战班,算法面试高频题班, 动态规划专题班
* - 更多详情请见官方网站:http://www.jiuzhang.com/?utm_source=sc-jianshucode-lm0210
*/ 
public class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        res[0] = 1;
        for (int i = 1; i < n; i++) {
            res[i] = res[i - 1] * nums[i - 1];
        }
        int right = 1;
        for (int i = n - 1; i >= 0; i--) {
            res[i] *= right;
            right *= nums[i];
        }
        return res;
    }
}
上一篇下一篇

猜你喜欢

热点阅读