非独立思考

    1. class Solution {
    2. public int[] productExceptSelf(int[] nums) {
    3. // 左右乘积,2个数组,分别存放左积数和右积数
    4. // 左积数L[i]是指当前数字左边所有数字的和,L[0]默认为1
    5. // 右积数R[i]是指当前数字右边所有数字的和,R[0]默认为1
    6. // 那么L[i]*R[i]就是所求的:除了自身以外数组的乘积
    7. int[] L = new int[nums.length];
    8. int[] R = new int[nums.length];
    9. L[0] = 1;
    10. R[R.length - 1] = 1;
    11. // 从左边开始循环
    12. for (int i = 1; i < L.length; i++) {
    13. L[i] = L[i - 1] * nums[i - 1];
    14. }
    15. // 从右边开始循环
    16. for (int i = R.length - 2; i >= 0; i--) {
    17. R[i] = R[i + 1] * nums[i + 1];
    18. }
    19. // 循环相乘
    20. for (int i = 0; i < L.length; i++) {
    21. nums[i] = L[i] * R[i];
    22. }
    23. return nums;
    24. }
    25. }