File tree 4 files changed +162
-0
lines changed
product-of-array-except-self
4 files changed +162
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+
6
+ // Dynamic programming
7
+
8
+
9
+ // Optimized Solution:
10
+ // Time Complexity: O(n)
11
+ // Space Complexity: O(1)
12
+
13
+
14
+ var maxSubArray = function ( nums ) {
15
+
16
+ let currentMax = nums [ 0 ] ;
17
+ let globalMax = nums [ 0 ]
18
+
19
+ for ( let i = 1 ; i < nums . length ; i ++ ) {
20
+
21
+ currentMax = Math . max ( currentMax + nums [ i ] , nums [ i ] ) ;
22
+ globalMax = Math . max ( currentMax , globalMax ) ;
23
+
24
+ }
25
+
26
+ return globalMax ;
27
+
28
+ } ;
29
+
30
+
31
+ // Time Complexity: O(n)
32
+ // Space Complexity: O(n)
33
+
34
+ // var maxSubArray = function (nums) {
35
+
36
+ // let dp = [nums[0]];
37
+
38
+ // for (let i = 1; i < nums.length; i++) {
39
+
40
+ // dp[i] = Math.max(dp[i - 1] + nums[i], nums[i])
41
+
42
+ // }
43
+
44
+ // return Math.max(...dp)
45
+
46
+ // };
47
+
48
+
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number[] }
4
+ */
5
+
6
+ // Time Complexity: O(n)
7
+ // Space Complexity: O(n)
8
+ var productExceptSelf = function ( nums ) {
9
+
10
+ let result = [ ] ;
11
+
12
+ let left = Array ( nums . length ) . fill ( 1 )
13
+ let right = Array ( nums . length ) . fill ( 1 )
14
+
15
+ for ( let i = 1 ; i < nums . length ; i ++ ) {
16
+
17
+ left [ i ] = left [ i - 1 ] * nums [ i - 1 ] ;
18
+ right [ nums . length - 1 - i ] = right [ right . length - i ] * nums [ nums . length - i ]
19
+
20
+ }
21
+
22
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
23
+ result [ i ] = left [ i ] * right [ i ] ;
24
+ }
25
+
26
+ return result ;
27
+
28
+
29
+ } ;
30
+
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number } n - a positive integer
3
+ * @return {number } - a positive integer
4
+ */
5
+
6
+ // Time Complexity: O(1)
7
+ // Space Complexity: O(1)
8
+
9
+ var reverseBits = function ( n ) {
10
+
11
+ let stack = [ ] ;
12
+ let num = n ;
13
+
14
+ for ( let i = 0 ; i < 32 ; i ++ ) {
15
+
16
+ stack . push ( num % 2 ) ;
17
+ num = Math . floor ( num / 2 ) ;
18
+ }
19
+
20
+ stack = stack . reverse ( ) ;
21
+
22
+
23
+ let result = 0 ;
24
+
25
+ for ( let i = 0 ; i < 32 ; i ++ ) {
26
+
27
+ result += stack [ i ] * Math . pow ( 2 , i ) ;
28
+
29
+ }
30
+
31
+ return result ;
32
+
33
+ } ;
34
+
35
+
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } target
4
+ * @return {number[] }
5
+ */
6
+
7
+
8
+ // Time Complexity : O(n)
9
+ // Space Complexity : O(n)
10
+
11
+ var twoSum = function ( nums , target ) {
12
+
13
+ let map = new Map ( ) ;
14
+
15
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
16
+
17
+ const temp = target - nums [ i ] ;
18
+
19
+ if ( map . has ( temp ) ) {
20
+ return [ i , map . get ( temp ) ]
21
+ }
22
+
23
+ map . set ( nums [ i ] , i ) ;
24
+ }
25
+
26
+ return [ ] ;
27
+ }
28
+
29
+
30
+ // Time Complexity: O(n^2)
31
+ // Space Complexity: O(1)
32
+ // This solution is straightforward but inefficient for large arrays. For better performance, consider the hashmap approach.
33
+
34
+ // var twoSum = function (nums, target) {
35
+
36
+ // for (let i = 0; i < nums.length; i++) {
37
+
38
+ // const loc = nums.indexOf((target - nums[i]), i + 1);
39
+
40
+ // if (loc >= 0) {
41
+ // return [i, loc]
42
+ // } else {
43
+ // continue;
44
+ // }
45
+
46
+ // }
47
+
48
+ // };
49
+
You can’t perform that action at this time.
0 commit comments