0
点赞
收藏
分享

微信扫一扫

LeetCode Top 100 Liked Questions 238. Product of Array Except Self (Java版; Medium)


​​welcome to my blog​​

LeetCode Top 100 Liked Questions 238. Product of Array Except Self (Java版; Medium)

题目描述

Given an array nums of n integers where n > 1, return an array output such that output[i] is equal to the
product of all the elements of nums except nums[i].

Example:

Input: [1,2,3,4]
Output: [24,12,8,6]
Note: Please solve it without division and in O(n).

Follow up:
Could you solve it with constant space complexity? (The output array does not count as extra space for
the purpose of space complexity analysis.)

第一次做; 核心:这道题主要是得有这么个意识: 不一定一次性求出结果; 可以先都求一部分, 然后再都求另一部分; temp的作用: 记录台阶; 两个做法都是遍历两遍数组, 区别在于在第二个for循环中, temp的位置不同, 这涉及到initialize → (execute → update)^n

/*
input:[1,2,3,4]
output:
res0=1 b1 b2 b3
res1=a1 1 b2 b3
res2=a1 a2 1 b3
res3=a1 a2 a3 1

res数组中的每个元素都由左右两部分构成
核心:这道题主要是要有这么个认识,就是说不是非得一次就把结果求出来
*/
class Solution {
public int[] productExceptSelf(int[] nums) {
if(nums==null || nums.length==0)
return nums;
int[] res = new int[nums.length];
//通过两遍遍历可以获得完整的结果
//
res[0] = 1;
for(int i=1; i<nums.length; i++){
res[i] = res[i-1]*nums[i-1];
}
int temp = 1;
for(int i=nums.length-2; i>=0; i--){
temp = temp*nums[i+1];
res[i] = res[i] * temp;
}
return res;
}
}

第一次做; 核心:这道题主要是得有这么个意识: 不一定一次性求出结果; 可以先都求一部分, 然后再都求另一部分; temp的作用: 记录台阶; 两个做法都是遍历两遍数组, 区别在于在第二个for循环中, temp的位置不同, 这涉及到initialize → (execute → update)^n

/*
input:[1,2,3,4]
output:
res0=1 b1 b2 b3
res1=a1 1 b2 b3
res2=a1 a2 1 b3
res3=a1 a2 a3 1

res数组中的每个元素都由左右两部分构成
核心:这道题主要是要有这么个认识,就是说不是非得一次就把结果求出来
*/
class Solution {
public int[] productExceptSelf(int[] nums) {
if(nums==null || nums.length==0)
return nums;
int[] res = new int[nums.length];
//通过两遍遍历可以获得完整的结果
//
res[0] = 1;
for(int i=1; i<nums.length; i++){
res[i] = res[i-1]*nums[i-1];
}
int temp = 1;
for(int i=nums.length-1; i>=0; i--){
res[i] = res[i] * temp;
temp = temp*nums[i];
}
return res;
}
}


举报

相关推荐

238. Product of Array Except Self

0 条评论