题解 | 构建乘积数组

构建乘积数组

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;
    }
}
全部评论

相关推荐

2024-12-25 09:09
四川师范大学 运营
想和你交朋友的潜伏者要冲国企:先去沃尔玛亲身感受标准化流程体系,一两年后再跳槽国内任何零售行业,可以有更大选择权吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务