赞
踩
解题思路:
当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。
- class Solution {
- public int[] productExceptSelf(int[] nums) {
- int len = nums.length;
- if (len == 0)
- return new int[0];
- int[] ans = new int[len];
- ans[0] = 1;
- int tmp = 1;
- //左半部分乘积
- for (int i = 1; i < len; i++) {
- ans[i] = ans[i - 1] * nums[i - 1];
- }
- //右半部分乘积,巧妙地使用tmp
- for (int i = len - 2; i >= 0; i--) {
- tmp *= nums[i + 1];
- ans[i] *= tmp;
- }
- return ans;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。