File tree Expand file tree Collapse file tree 4 files changed +162
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 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