238. Product of Array Except Self

Medium

讲真,这种奇技淫巧的题,不做一次是永远不可能在面试时答上来的。老老实实刷tag题,面经题,理解透彻好好总结,不一定能让你在面试场上做出来新题,但却是唯一能提高这种可能的方法了。

这题要求O(n)Time Complexity, 所以分两次扫数组。一次从左到右,把每个元素左边的乘积算出来;第二次从右到左,把每个元素右边的再乘上去。这样就完成了乘完所有非自己的元素。

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int[] res = new int[nums.length];
        res[0] = 1;
        for (int i = 1; i < nums.length; i++){
            res[i] = res[i - 1] * nums[i - 1];
        }
        int right = 1;
        for (int j = nums.length - 1; j >= 0; j--){
            res[j]  *= right; 
            right *= nums[j];
        }
        return res;
    }
}

你可能感兴趣的:(238. Product of Array Except Self)