题解 | 构建乘积数组

构建乘积数组

https://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46?tpId=13&&tqId=11204&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

  • left[i]表示原数组第i个元素以左(<i)的所有元素的累积
  • right[i]表示原数组第i个元素以右(>i)的所有元素的累积
  • 需要注意的是left数组的第一个元素和right数组的最后一个元素都是1
  • 题目限定了输入范围因此不用特殊考虑输入校验问题
public class Solution {
    public int[] multiply(int[] a) {
        int[] left = new int[a.length];
        int[] right = new int[a.length];
        left[0] = 1;
        right[a.length - 1] = 1;
        for (int i = 1; i < a.length; i++) {
            left[i] = left[i-1] * a[i-1];
        }

        for (int i = a.length -2; i >=0; i--) {
            right[i] = right[i+1] * a[i+1];
        }

        int[] ret = new int[a.length];
        for (int i = 0; i < a.length; i++) {
            ret[i] = left[i] * right[i];
        }
        return ret;
    }
}
全部评论

相关推荐

King987:这不就是力扣的算法题吗?
点赞 评论 收藏
分享
饼子吃到撑:当我看到外企的时候,我就知道这大概率可能是真的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务