微软 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 28=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;
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.