File tree 3 files changed +47
-0
lines changed
solution/0200-0299/0238.Product of Array Except Self
3 files changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution
2
+ {
3
+ public:
4
+ vector<int > productExceptSelf (vector<int > &nums)
5
+ {
6
+ vector<int > dpLeft (nums.size (), 1 );
7
+ vector<int > dpRight (nums.size (), 1 );
8
+ for (int i = 1 ; i < nums.size (); i++)
9
+ {
10
+ dpLeft[i] = dpLeft[i - 1 ] * nums[i - 1 ];
11
+ }
12
+ for (int i = nums.size () - 2 ; i >= 0 ; i--)
13
+ {
14
+ dpRight[i] = dpRight[i + 1 ] * nums[i + 1 ];
15
+ }
16
+ vector<int > result;
17
+ for (int i = 0 ; i < nums.size (); i++)
18
+ {
19
+ result.push_back (dpLeft[i] * dpRight[i]);
20
+ }
21
+ return result;
22
+ }
23
+ };
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn product_except_self ( nums : Vec < i32 > ) -> Vec < i32 > {
3
+ let mut dp_left=vec ! [ 1_i32 ; nums. len( ) ] ;
4
+ let mut dp_right=vec ! [ 1_i32 ; nums. len( ) ] ;
5
+ for i in 1 ..nums. len ( ) {
6
+ dp_left[ i] =dp_left[ i-1 ] * nums[ i-1 ] ;
7
+ }
8
+ for i in ( 0 ..( nums. len ( ) -1 ) ) . rev ( ) {
9
+ dp_right[ i] =dp_right[ i+1 ] * nums[ i+1 ] ;
10
+ }
11
+ dp_left. into_iter ( ) . enumerate ( ) . map ( |( i, x) | x* dp_right[ i] ) . collect ( )
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ function productExceptSelf ( nums : number [ ] ) : number [ ] {
2
+ let dpLeft = Array ( nums . length ) . fill ( 1 ) ;
3
+ let dpRight = Array ( nums . length ) . fill ( 1 ) ;
4
+ for ( let i = 1 ; i < nums . length ; i ++ ) {
5
+ dpLeft [ i ] = dpLeft [ i - 1 ] * nums [ i - 1 ] ;
6
+ }
7
+ for ( let i = nums . length - 2 ; i >= 0 ; i -- ) {
8
+ dpRight [ i ] = dpRight [ i + 1 ] * nums [ i + 1 ] ;
9
+ }
10
+ return dpLeft . map ( ( x , i ) => x * dpRight [ i ] ) ;
11
+ }
You can’t perform that action at this time.
0 commit comments