238. Product of Array Except Self(C++ 和 Java解法)

Example: 

Input:  [1,2,3,4]
Output: [24,12,8,6]

leetcode提示不能用除法,保证O(n)时间复杂度

解题思路:

leftProduct[]存储左乘,rightProduct[]存储右乘。如leftProduct[2]代表3的左乘是 1 * 2 = 2;rightProduct[2]代表3的右乘是4;

result[3] = 2 * 4 = 8.

C++版本

vector<int> productExceptSelf(vector<int>& nums) {
        vector<int> leftProduct(nums.size());
        vector<int> rightProduct(nums.size());
        vector<int> result(nums.size());
        
        for(int i = 1;i < nums.size();i++){
            if(i == 0){
                leftProduct[0] = 1; 
            }
            else{
                leftProduct[i] = leftProduct[i - 1] * nums[i - 1];  
            } 
        }
        
        for(int i = nums.size() - 1;i >= 0;i--){
            if(i == nums.size() - 1){
                rightProduct[nums.size() - 1] = 1;
            }
            else{
                rightProduct[i] = rightProduct[i + 1] * nums[i + 1];    
            }
            
            result[i] = leftProduct[i] * rightProduct[i];
        }
        
        return result;
}

Java版本

public int[] productExceptSelf(int[] nums) {
        int[] leftProduct = new int[nums.length];       //左乘
        int[] rightProduct = new int[nums.length];      //右乘
        int[] result = new int[nums.length];
        
        for(int i = 0;i < nums.length;i++){
            if(i == 0){
                leftProduct[0] = 1;
            }
            else{
                leftProduct[i] = leftProduct[i - 1] * nums[i - 1];    
            }
        }
        
        for(int i = nums.length - 1;i >= 0;i--){
            if(i == nums.length - 1){
                rightProduct[nums.length - 1] = 1;
            }
            else{
                rightProduct[i] = rightProduct[i + 1] * nums[i + 1];    
            }
            
            result[i] = leftProduct[i] * rightProduct[i];
        }
        
        return result;
}

本小白华中科技大学在读研究生,自然语言处理方向。现每日一更LeetCode  Top 100 Liked Questions, 旨在于通过通俗易懂的画风和诸位计算机朋友们一起成长呀,不局限某题,争取举一反三,所有Questions均呈上C++和Java解法,不足之处多多指正,共同学习。 

参考链接:https://leetcode.com/problems/product-of-array-except-self/discuss/693902/Python-Simple-Solution-with-Explanation 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值