File tree 5 files changed +135
-0
lines changed
longest-consecutive-sequence
5 files changed +135
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {boolean }
4
+ */
5
+ var containsDuplicate = function ( nums ) {
6
+
7
+ // ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ: filter + indexOf ์ฌ์ฉ => indexOf(),filter() ๊ฐ๊ฐ ์๊ฐ๋ณต์ก๋ O(n) ๋ ๊ฐ๊ฐ ์ค์ฒฉ์ด๋ฏ๋ก ์๊ฐ๋ณต์ก๋ O(n^2)
8
+ // Runtime: Time Limit Exceeded ๋ฐ์
9
+ const method1 = function ( ) {
10
+ const filterNums = nums . filter ( ( item , index ) => nums . indexOf ( item ) !== index ) ;
11
+ return filterNums . length > 0 ;
12
+ }
13
+
14
+ // ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ: Set ์ฌ์ฉ => nums ๋ฐฐ์ด์ set์ผ๋ก ๋ณํํ ๋ ํ๋ฒ์ฉ ํ์ธํ๋ฉด ๋๋ฏ๋ก ์๊ฐ๋ณต์ก๋ O(n)
15
+ // Runtime: 14ms
16
+ const method2 = function ( ) {
17
+ const setNums = new Set ( nums ) ;
18
+ return setNums . size !== nums . length ;
19
+ }
20
+
21
+ // ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค Set์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ํจ์ฌ ๋์
22
+ return method2 ( ) ;
23
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+ var rob = function ( nums ) {
6
+ // 1. nums ๋ฐฐ์ด 0์ผ ๋์ 1์ผ ๋
7
+ if ( nums . length === 0 ) return 0 ;
8
+ if ( nums . length === 1 ) return nums [ 0 ] ;
9
+
10
+ // 2. i=1์ผ ๋
11
+ nums [ 1 ] = Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
12
+
13
+ // 3. i=2์ผ ๋๋ถํฐ for๋ฌธ ์ํ
14
+ for ( let i = 2 ; i < nums . length ; i ++ ) {
15
+ nums [ i ] = Math . max ( nums [ i - 2 ] + nums [ i ] , nums [ i - 1 ] )
16
+ }
17
+ return nums [ nums . length - 1 ] ;
18
+ } ;
19
+
20
+ // ์๊ฐ๋ณต์ก๋์ ๊ณต๊ฐ๋ณต์ก๋
21
+ // ์๊ฐ๋ณต์ก๋: ๋ฐฐ์ด์ ๊ธธ์ด n ๋งํผ for๋ฌธ ์ํํ๋ฏ๋ก -> O(n)
22
+ // ๊ณต๊ฐ๋ณต์ก๋: nums ๋ฐฐ์ด ๊ทธ๋๋ก ์์ ํ์ฌ ๊ณ์ฐ -> O(1)
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+ var longestConsecutive = function ( nums ) {
6
+ // ์ฒซ ๋ฒ์งธ ์ ๋ ฌ์ ํ๋ค.
7
+ if ( nums . length === 0 ) {
8
+ return 0 ;
9
+ }
10
+
11
+ nums . sort ( ( a , b ) => a - b ) ; // ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
12
+ console . log ( nums ) ;
13
+
14
+ // ๋ ๋ฒ์งธ ์ซ์๊ฐ 1์ฉ ๊ณ์ํด์ ์ฆ๊ฐํ๋ ๊ตฌ๊ฐ์ ์ฐพ๋๋ค.
15
+ let longest = 0 ;
16
+ let length = 1 ;
17
+
18
+ for ( let i = 0 ; i < nums . length - 1 ; i ++ ) {
19
+ if ( nums [ i ] === nums [ i + 1 ] ) {
20
+ continue ;
21
+ }
22
+ // ์ฐ์ํด์ 1์ฉ ์ฆ๊ฐํ๋ ๊ตฌ๊ฐ ์ฐพ๊ธฐ
23
+ if ( nums [ i + 1 ] - nums [ i ] === 1 ) {
24
+ length += 1 ;
25
+ } else {
26
+ longest = Math . max ( longest , length ) ;
27
+ length = 1 ;
28
+ }
29
+ }
30
+ return Math . max ( longest , length ) ;
31
+ } ;
32
+
33
+ // ์๊ฐ๋ณต์ก๋์ ๊ณต๊ฐ๋ณต์ก๋
34
+ // ์๊ฐ๋ณต์ก๋: ์ ๋ ฌ ์ฌ์ฉ(O(nlogn)) + for๋ฌธ์ผ๋ก ๋ฐฐ์ด ํ์(O(n)) = O(nlogn)
35
+ // ๊ณต๊ฐ๋ณต์ก๋: O(1)
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } k
4
+ * @return {number[] }
5
+ */
6
+ var topKFrequent = function ( nums , k ) {
7
+ let map = new Map ( ) ; // key์๋ ํด๋น๋๋ ์ซ์, value์๋ ํด๋น๋๋ ์ซ์์ ๊ฐฏ์
8
+
9
+ // ์ซ์๋ณ ๋น๋์
10
+ nums . forEach ( ( num ) => {
11
+ map . set ( num , ( map . get ( num ) || 0 ) + 1 ) ;
12
+ } ) ;
13
+
14
+ // ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ฃผ๊ณ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
15
+ let sortedResult = Array . from ( map . entries ( ) ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
16
+ //console.log(sortedResult);
17
+ //console.log(sortedResult.slice(0,k));
18
+
19
+ // k๊ฐฏ์์ ์ซ์ ๋ฐํ
20
+ return sortedResult . slice ( 0 , k ) . map ( item => item [ 0 ] ) ;
21
+ } ;
22
+
23
+ // ์ฌ๊ธฐ์ ์ ์ฝ๋์ ์๊ฐ๋ณต์ก๋์ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ์๊ฐํด๋ณด์...
24
+ // ์๊ฐ๋ณต์ก๋ => O(m log m) ** ๋ ๊ฐ์ ํ ๋ฐฉ๋ฒ ์ฐพ์๋ณด๊ธฐ
25
+ // forEach ํตํ ๋ฐฐ์ด ์ํ: ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ n์ด๋ผ๊ณ ํ๋ค๋ฉด O(n)
26
+ // sortedResult (์ ๋ ฌ): O(m log m)
27
+ // k๊ฐฏ์์ ์ซ์ ๋ฐํ: k๊ฐ ํญ๋ชฉ์ ๋ํด ์ฐ์ฐํ๋๊น O(k)
28
+
29
+ // ๊ณต๊ฐ๋ณต์ก๋ => O(n)
30
+ // map์ ํฌ๊ธฐ: ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ n์ด๋ผ๊ณ ํ๋ค๋ฉด O(n)
31
+ // sortedResult: O(m)
32
+ // k๊ฐ ์ซ์ ์ ์ฅ: O(k)
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string } s
3
+ * @return {boolean }
4
+ */
5
+ var isPalindrome = function ( s ) {
6
+ // 1. ๋ฌธ์์ด์ ๋ค ์๋ฌธ์๋ก ๋ฐ๊พธ๊ณ , ์ํ๋ฒณ/์ซ์ ์๋ ๊ฑฐ ๋ค ์ ๊ฑฐ
7
+ if ( s . length === 1 ) {
8
+ return true ;
9
+ } else {
10
+ let lcLetter = s . toLowerCase ( ) . replace ( / [ ^ a - z 0 - 9 ] / g, '' ) ;
11
+ //console.log(lcLetter);
12
+
13
+ // 2. ๋ฌธ์์ด์ด ์์์ ์์ํ ๋์ ๋ค์์ ์์ํ ๋ ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false
14
+ if ( lcLetter ) {
15
+ for ( let i = 0 ; i < Math . floor ( lcLetter . length / 2 ) ; i ++ ) {
16
+ if ( lcLetter [ i ] !== lcLetter [ lcLetter . length - 1 - i ] ) return false ;
17
+ }
18
+ return true ;
19
+ } else {
20
+ return true ;
21
+ }
22
+ }
23
+ } ;
You canโt perform that action at this time.
0 commit comments