File tree Expand file tree Collapse file tree 5 files changed +135
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 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