zoukankan      html  css  js  c++  java
  • 30-Day Leetcoding Challenge Day15

    用两个数组分别记录左边和右边得乘积

    L[i] = L[i-1]*nums[i-1];

    R[i] = R[i+1]*nums[i+1];

    nums[i] = L[i]*R[i];

    JAVA

    class Solution {
        public int[] productExceptSelf(int[] nums) {
            int n = nums.length;
            int[] left = new int[n];
            int[] right = new int[n];
            Arrays.fill(left,1);
            Arrays.fill(right,1);
            for(int i = 1; i < n; i++){
                left[i] = left[i-1]*nums[i-1];
            }
            for(int i = n-2; i >= 0; i--){
                right[i] = right[i+1]*nums[i+1];
            }
            for(int i = 0; i < n; i++){
                nums[i] = left[i]*right[i];
            }
            return nums;
        }
    }

    Python3

    class Solution:
        def productExceptSelf(self, nums: List[int]) -> List[int]:
            res = []
            left = [1]*len(nums)
            right = [1]*len(nums)
            for i in range(1, len(nums)):
                left[i] = left[i-1]*nums[i-1]
            for i in range(len(nums)-2, -1, -1):
                right[i] = right[i+1]*nums[i+1]
            for i in range(len(nums)):
                res.append(left[i]*right[i])
            return res
  • 相关阅读:
    dp uva1025
    dp uva10003
    dp最优矩阵相乘poj1651
    dp uva11584
    动态规划uva11400
    流形学习 (Manifold Learning)
    tf.nn.embedding_lookup
    word2vec
    word2vec 细节解析1
    collections-Counter
  • 原文地址:https://www.cnblogs.com/yawenw/p/12719715.html
Copyright © 2011-2022 走看看