diff --git a/best-time-to-buy-and-sell-stock/mintheon.java b/best-time-to-buy-and-sell-stock/mintheon.java new file mode 100644 index 000000000..2568804f4 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/mintheon.java @@ -0,0 +1,17 @@ +class Solution { + /** + 시간복잡도: O(n) + 공간복잡도: O(1) + */ + public int maxProfit(int[] prices) { + int buyPrice = prices[0]; + int maxProfit = 0; + + for(int i = 0; i < prices.length; i++) { + buyPrice = Math.min(buyPrice, prices[i]); + maxProfit = Math.max(maxProfit, prices[i] - buyPrice); + } + + return maxProfit; + } +} diff --git a/encode-and-decode-strings/mintheon.java b/encode-and-decode-strings/mintheon.java new file mode 100644 index 000000000..8201476b8 --- /dev/null +++ b/encode-and-decode-strings/mintheon.java @@ -0,0 +1,39 @@ +import java.util.ArrayList; +import java.util.List; + +public class Codec { + String SPLIT = ":"; + + // Encodes a list of strings to a single string. + public String encode(List strs) { + StringBuilder encoded = new StringBuilder(); + + for(String str : strs) { + encoded.append(str.length()).append(SPLIT).append(str); + } + + return encoded.toString(); + } + + // Decodes a single string to a list of strings. + public List decode(String s) { + List decoded = new ArrayList<>(); + + int pointer = 0; + while(pointer < s.length()) { + int index = s.indexOf(SPLIT, pointer); + int length = Integer.parseInt(s.substring(pointer, index)); + + String str = s.substring(index + 1, index + 1 + length); + decoded.add(str); + + pointer = index + 1 + length; + } + + return decoded; + } +} + +// Your Codec object will be instantiated and called as such: +// Codec codec = new Codec(); +// codec.decode(codec.encode(strs)); diff --git a/group-anagrams/mintheon.java b/group-anagrams/mintheon.java new file mode 100644 index 000000000..9069735a3 --- /dev/null +++ b/group-anagrams/mintheon.java @@ -0,0 +1,30 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +class Solution { + /** + 시간복잡도: O(n) + 공간복잡도: O(n) + */ + public List> groupAnagrams(String[] strs) { + Map> anagramMap = new HashMap<>(); + + for(String str : strs) { + char[] charStr = str.toCharArray(); + Arrays.sort(charStr); + String sortedStr = String.valueOf(charStr); + + if(!anagramMap.containsKey(sortedStr)) { + anagramMap.put(sortedStr, new ArrayList<>()); + + } + + anagramMap.get(sortedStr).add(str); + } + + return new ArrayList<>(anagramMap.values()); + } +}