File tree Expand file tree Collapse file tree 3 files changed +82
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 3 files changed +82
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number[] }
4+ *
5+ * Time Complexity: O(n)
6+ * Space Complexity: O(n)
7+ */
8+ var productExceptSelf = function ( nums ) {
9+ const answer = [ ]
10+ const zeros = nums . filter ( n => n === 0 ) . length ;
11+ if ( zeros > 1 ) return new Array ( nums . length ) . fill ( 0 ) ;
12+
13+ const productOfNums = nums . reduce ( ( acc , cur ) => cur === 0 ? acc : acc * cur , 1 ) ;
14+
15+ nums . forEach ( num => {
16+ if ( num === 0 ) {
17+ answer . push ( productOfNums ) ;
18+ } else {
19+ answer . push ( zeros ? 0 : productOfNums / num ) ;
20+ }
21+ } ) ;
22+ return answer
23+ } ;
24+
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+ * Time Complexity: O(n)? n이 32이기 때문에 O(1)?
6+ * Space Complexity: O(1)
7+ */
8+
9+ // 일반적인 풀이
10+ var reverseBits = function ( n ) {
11+ const binary = n . toString ( 2 ) ;
12+ const reversedBinary = binary . split ( '' ) . reverse ( ) . join ( '' ) . padEnd ( 32 , '0' ) ;
13+ const answer = parseInt ( reversedBinary , 2 ) ;
14+
15+ return answer ;
16+ // return parseInt(n.toString(2).split('').reverse().join('').padEnd(32, '0'), 2);
17+ } ;
18+
19+ /**
20+ *
21+ * Time Complexity: O(1)
22+ * Space Complexity: O(1)
23+ */
24+
25+ // 비트 연산을 이용한 풀이
26+ var reverseBits2 = function ( n ) {
27+ let result = 0 ;
28+ for ( let i = 0 ; i < 32 ; i ++ ) {
29+ // result를 왼쪽으로 시프트하고 n의 마지막 비트를 더함
30+ result = ( result << 1 ) | ( n & 1 ) ;
31+ // n을 오른쪽으로 시프트
32+ n = n >> 1 ;
33+ }
34+ return result >>> 0 ;
35+ }
36+
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } target
4+ * @return {number[] }
5+ *
6+ * Time Complexity: O(n)
7+ * Space Complexity: O(n)
8+ */
9+ var twoSum = function ( nums , target ) {
10+ const map = new Map ( ) ;
11+
12+ for ( let i = 0 ; i < nums . length ; ++ i ) {
13+ const diff = target - nums [ i ] ;
14+
15+ if ( map . has ( diff ) ) {
16+ return [ map . get ( diff ) , i ] ;
17+ }
18+
19+ map . set ( nums [ i ] , i ) ;
20+ }
21+ } ;
22+
You can’t perform that action at this time.
0 commit comments