diff --git a/best-time-to-buy-and-sell-stock/sunjae95.js b/best-time-to-buy-and-sell-stock/sunjae95.js new file mode 100644 index 000000000..b49f26827 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/sunjae95.js @@ -0,0 +1,28 @@ +/** + * @description + * brainstorming: + * brute force + * + * time complexity: O(n) + * space complexity: O(1) + */ +var maxProfit = function (prices) { + let answer, min, max; + prices.forEach((price, i) => { + if (i === 0) { + min = price; + max = price; + answer = 0; + return; + } + + if (price > max) max = price; + if (price < min) { + min = price; + max = price; + } + answer = Math.max(answer, max - min); + }); + + return answer; +}; diff --git a/group-anagrams/sunjae95.js b/group-anagrams/sunjae95.js new file mode 100644 index 000000000..b64afa64e --- /dev/null +++ b/group-anagrams/sunjae95.js @@ -0,0 +1,23 @@ +/** + * @description + * brainstorming: + * brute force + hashtable + * + * time complexity: O(n* k log k) + * space complexity: O(n* k) + */ +var groupAnagrams = function (strs) { + const map = new Map(); + const answer = []; + + strs.forEach((str) => { + const convertedStr = str.split("").sort().join(); + if (map.has(convertedStr)) + map.set(convertedStr, map.get(convertedStr).concat(str)); + else map.set(convertedStr, [str]); + }); + + map.forEach((value) => answer.push(value)); + + return answer; +};