JZ51 构建乘积数组

构建乘积数组

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

改进
for(int i =0; i<A.length ; i++ ){

        int k = 0;
        leftarr[i] = 1;
        while(k<i){
            leftarr[i] = leftarr[i] * A[k];
            k++;
        }

        int j = A.length-1;
        rightarr[i] = 1;
        while(j>i){
            rightarr[i] = rightarr[i] * A[j];
            j--;
        }
    }

可以改成

        left[0] = right[len - 1] = 1;

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

1.
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
int [] leftarr = new int [A.length];
int [] rightarr = new int [A.length];

    for(int i =0; i<A.length ; i++ ){

        int k = 0;
        leftarr[i] = 1;
        while(k<i){
            leftarr[i] = leftarr[i] * A[k];
            k++;
        }

        int j = A.length-1;
        rightarr[i] = 1;
        while(j>i){
            rightarr[i] = rightarr[i] * A[j];
            j--;
        }
    }
    int [] res = new int [A.length];

    for(int i =0;i<A.length;i++){
        if(i==0) res[i] = rightarr[i];
        else if(i == A.length-1) res[i] = leftarr[i];
        else res[i] = leftarr[i] * rightarr[i];
    }
    return res;
}

}

全部评论

相关推荐

投递阿里巴巴控股集团等公司7个岗位 >
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务