File tree Expand file tree Collapse file tree 2 files changed +64
-0
lines changed
best-time-to-buy-and-sell-stock Expand file tree Collapse file tree 2 files changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } prices
3+ * @return {number }
4+ */
5+
6+ /**
7+ * Runtime: 73ms, Memory: 59.38MB
8+ * n = prices.length
9+ * Time complexity: O(n)
10+ * Space complexity: O(1)
11+ *
12+ */
13+
14+ var maxProfit = function ( prices ) {
15+ let minPrice = prices [ 0 ] ;
16+ let maxPrice = prices [ 0 ] ;
17+ let answer = 0 ;
18+
19+ for ( let i = 1 ; i < prices . length ; i ++ ) {
20+ answer = Math . max ( answer , maxPrice - minPrice ) ;
21+
22+ // 가장 뒤쪽 값이 max일 때
23+ if ( maxPrice < prices [ i ] ) {
24+ maxPrice = prices [ i ] ;
25+ answer = Math . max ( answer , maxPrice - minPrice ) ;
26+ continue ;
27+ }
28+ // 가장 뒷쪽 값이 min일 때
29+ if ( minPrice > prices [ i ] ) {
30+ minPrice = prices [ i ] ;
31+ maxPrice = prices [ i ] ;
32+ }
33+ }
34+ return answer ;
35+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string[] } strs
3+ * @return {string[][] }
4+ */
5+
6+ /**
7+ * Runtime: 100ms, Memory: 62.34MB
8+ * n = strs.length
9+ * k = 문자열의 최대 길이
10+ * Time complexity: O(n * k log k)
11+ * -> klogk는 길이가 k인 문자열을 sort
12+ * -> n은 이걸 각 문자열마다 반복하기 때문
13+ *
14+ * Space complexity: O(n)
15+ *
16+ */
17+
18+ var groupAnagrams = function ( strs ) {
19+ let answer = new Map ( ) ;
20+
21+ for ( let j = 0 ; j < strs . length ; j ++ ) {
22+ const sortedWord = strs [ j ] . split ( "" ) . sort ( ) . join ( "" ) ;
23+ answer . has ( sortedWord )
24+ ? answer . set ( sortedWord , [ ...answer . get ( sortedWord ) , strs [ j ] ] )
25+ : answer . set ( sortedWord , [ strs [ j ] ] ) ;
26+ }
27+
28+ return Array . from ( answer . values ( ) ) ;
29+ } ;
You can’t perform that action at this time.
0 commit comments