File tree Expand file tree Collapse file tree 5 files changed +124
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +124
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * ๋ฐฐ์ด์ ์ค๋ณต๋ ์์๊ฐ ์๋์ง ํ์ธํ๋ ํจ์
3+ * @param nums - ํ์ธํ ์ ์ ๋ฐฐ์ด
4+ * @returns ์ค๋ณต๋ ์์๊ฐ ์์ผ๋ฉด true, ๋ชจ๋ ์์๊ฐ ๊ณ ์ ํ๋ฉด false
5+ *
6+ * ๊ธฐ์กด์ for๋ฌธ์ ์ฌ์ฉํด filter,indexOf ๋ฐฉ์์ ์ฌ์ฉํ์ง๋ง, ์๊ฐ๋ณต์ก๋๊ฐ O(n^2)์ด๋ผ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
7+ * Set์ ์ฌ์ฉํ๋ฉด ์ค๋ณต๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , size๋ฅผ ํตํด ์ค๋ณต๋ ์์๊ฐ ์๋์ง ํ์ธํ ์ ์๋ค.
8+ */
9+ function containsDuplicate ( nums : number [ ] ) : boolean {
10+ return new Set ( nums ) . size !== nums . length
11+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ *
3+ * @param {number[] } nums
4+ * @param nums
5+ *
6+ * ํ์ด
7+ * dp ๋ฐฐ์ด์ ์ฌ์ฉํด nums ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ์ด๊ธฐํํ๋ค.
8+ * dp[0]์ nums[0]์ผ๋ก ์ด๊ธฐํํ๊ณ , dp[1]์ nums[0]๊ณผ nums[1] ์ค ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ค.
9+ * dp[2]๋ถํฐ๋ dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i])๋ก ์ด๊ธฐํํ๋ค.
10+ * dp[i-1]์ i๋ฒ์งธ ์ง์ ํธ์ง ์์ ๊ฒฝ์ฐ, dp[i-2] + nums[i]๋ i๋ฒ์งธ ์ง์ ํธ๊ณ i-1๋ฒ์งธ ์ง์ ํธ์ง ์์ ๊ฒฝ์ฐ์ด๋ค.
11+ *
12+ */
13+
14+ function rob ( nums : number [ ] ) : number {
15+ const n = nums . length
16+ if ( n === 0 ) return 0
17+ if ( n === 1 ) return nums [ 0 ] ;
18+
19+ let dp0 = nums [ 0 ]
20+ let dp1 = Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
21+
22+ for ( let i = 2 ; i < n ; i ++ ) {
23+ const curMaxValue = Math . max ( dp1 , dp0 + nums [ i ] ) ;
24+ dp0 = dp1 ;
25+ dp1 = curMaxValue ;
26+ }
27+
28+ return dp1
29+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * ์ฐ์๋ ์ซ์์ ์ต๋ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์
3+ * @param {number[] } nums
4+ * @return {number }
5+ *
6+ * ํ์ด
7+ *
8+ * nums ๋ฐฐ์ด์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
9+ * ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ ๋ ฌํ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ฐ์๋ ์ซ์์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค.
10+ */
11+ function longestConsecutive ( nums : number [ ] ) : number {
12+ if ( nums . length === 0 ) return 0 ;
13+ const sortedNums = Array . from ( new Set ( nums ) ) . sort ( ( a , b ) => a - b ) ;
14+
15+ if ( sortedNums . length === 1 ) return 1 ;
16+
17+ let currentCount = 1 ;
18+ let maxCount = 1 ;
19+
20+ for ( let i = 0 ; i < sortedNums . length - 1 ; i ++ ) {
21+ const currentNum = sortedNums [ i ] ;
22+ const nextNum = sortedNums [ i + 1 ] ;
23+
24+ if ( currentNum + 1 === nextNum ) {
25+ currentCount ++ ;
26+ maxCount = Math . max ( maxCount , currentCount ) ;
27+ } else {
28+ currentCount = 1 ;
29+ }
30+ }
31+
32+ return maxCount ;
33+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * nums ๋ฐฐ์ด์์ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ๋ k๊ฐ์ ์์๋ฅผ ๋ฐํํ๋ ๋ฌธ์
3+ * @param {number[] } nums
4+ * @param {number } k
5+ * @return {number[] }
6+ *
7+ * ํ์ด
8+ * countObject ๊ฐ์ฒด๋ฅผ ์์ฑํด nums ๋ฐฐ์ด์ ์์๋ฅผ key๋ก, ๋ฑ์ฅ ํ์๋ฅผ value๋ก ์ ์ฅํ๋ค.
9+ * ๋ฌธ์ ๋ ํด๊ฒฐ ํ์ง๋ง, O(n log n)์ ์๊ฐ๋ณต์ก๋๋ก ๊ฐ์ ํ ์ฌ์ง๊ฐ ์๋ค.
10+ * ๊ฐ์ ํ๊ธฐ ์ํด์ Heap ์ ์ฌ์ฉํด๋ณผ ์ ์๋ค๊ณ ํ๋๋ฐ, Heap์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์์ผ๊ฒ ๋ค.
11+ * Heap ์ ์ฌ์ฉํ๋ฉด O(n log k)์ ์๊ฐ๋ณต์ก๋๋ก ๊ฐ์ ํ ์ ์๋ค๊ณ ํ๋ค..
12+ */
13+
14+ function topKFrequent ( nums : number [ ] , k : number ) : number [ ] {
15+ const countObject : { [ key : number ] : number } = { } ;
16+
17+ for ( const num of nums ) {
18+ countObject [ num ] = ( countObject [ num ] || 0 ) + 1 ;
19+ }
20+
21+ const sortObject = Object . entries ( countObject ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
22+
23+ return sortObject . slice ( 0 , k ) . map ( ( [ key ] ) => Number ( key ) ) ;
24+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * ๋ ์์ ํฉ์ด ํน์ ๊ฐ(target)์ด ๋๊ฒ ํ๋ ๋๋จธ์ง ํ๋์ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ => ๋ณด์๋ฅผ ์ฐพ๋ ๋ฌธ์
3+ * @param nums - ์ ์ ๋ฐฐ์ด
4+ * @param target - ๋ ์์ ํฉ
5+ * @returns ๋ ์์ ์ธ๋ฑ์ค
6+ *
7+ * ํ์ด 1
8+ * ์ด์ค for ๋ฌธ์ ์ฌ์ฉํด nums์ ์์๋ฅผ ๋ํ ๊ฐ์ด target๊ณผ ๊ฐ์์ง ํ์ธํ๋ค.
9+ * ์ด๋ ๊ฒ ํด๊ฒฐํ๋๋ O(n^2)์ ์๊ฐ๋ณต์ก๋๋ก ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค๊ณ ํ๋จ.
10+ *
11+ * ํ์ด 2
12+ * Map์ ์ฌ์ฉํด for ๋ฌธ์ ํ ๋ฒ๋ง ์ฌ์ฉํ๋๋ก ์์ ํด๋ณด์๋ค.
13+ */
14+
15+ function twoSum ( nums : number [ ] , target : number ) : number [ ] {
16+ const newMap = new Map < number , number > ( ) ;
17+
18+ for ( let i = 0 ; i < nums . length ; i ++ ) {
19+ const complement = target - nums [ i ] ;
20+
21+ if ( newMap . has ( complement ) ) {
22+ return [ newMap . get ( complement ) ! , i ]
23+ }
24+
25+ newMap . set ( nums [ i ] , i )
26+ }
27+ } ;
You canโt perform that action at this time.
0 commit comments