From 31732aafed84e57eefb2b234775149ba6d02aacb Mon Sep 17 00:00:00 2001 From: SeungMin Lee Date: Sun, 13 Apr 2025 19:51:19 +0900 Subject: [PATCH 1/5] contains duplicate --- contains-duplicate/iam-edwin.kt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 contains-duplicate/iam-edwin.kt diff --git a/contains-duplicate/iam-edwin.kt b/contains-duplicate/iam-edwin.kt new file mode 100644 index 000000000..9ab0c7ae1 --- /dev/null +++ b/contains-duplicate/iam-edwin.kt @@ -0,0 +1,5 @@ +class Solution { + fun containsDuplicate(nums: IntArray): Boolean { + return nums.size != nums.distinct().size + } +} From d8a606956094e1571944b4cc2f73475acd38e6d5 Mon Sep 17 00:00:00 2001 From: SeungMin Lee Date: Sun, 13 Apr 2025 20:46:14 +0900 Subject: [PATCH 2/5] two sum --- two-sum/iam-edwin.kt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 two-sum/iam-edwin.kt diff --git a/two-sum/iam-edwin.kt b/two-sum/iam-edwin.kt new file mode 100644 index 000000000..9d5418db6 --- /dev/null +++ b/two-sum/iam-edwin.kt @@ -0,0 +1,22 @@ +class Solution { + fun twoSum(nums: IntArray, target: Int): IntArray { + val indexMap = nums.mapIndexed { index, num -> num to index } + .groupBy({ it.first }, {it.second}) + + indexMap.forEach { (firstNum, firstIndicies) -> + val secondNum = target - firstNum + if (firstNum == secondNum) { + if (firstIndicies.size > 1) { + return intArrayOf(firstIndicies[0], firstIndicies[1]) + } + } else { + val secondIndicies = indexMap[secondNum] + if (secondIndicies != null) { + return intArrayOf(firstIndicies[0], secondIndicies[0]) + } + } + } + + return intArrayOf() + } +} From 03ee8290f6958a1c2752f6cb00a1423eb65a991e Mon Sep 17 00:00:00 2001 From: SeungMin Lee Date: Sun, 13 Apr 2025 21:28:52 +0900 Subject: [PATCH 3/5] top k frequent elements --- top-k-frequent-elements/iam-edwin.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 top-k-frequent-elements/iam-edwin.kt diff --git a/top-k-frequent-elements/iam-edwin.kt b/top-k-frequent-elements/iam-edwin.kt new file mode 100644 index 000000000..605460d49 --- /dev/null +++ b/top-k-frequent-elements/iam-edwin.kt @@ -0,0 +1,10 @@ +class Solution { + fun topKFrequent(nums: IntArray, k: Int): IntArray { + val countMap = nums.groupBy { it } + .mapValues { it.value.size } + val sortedList = countMap.entries + .sortedByDescending { it.value } + .map { it.key } + return sortedList.subList(0, k).toIntArray() + } +} From 866136bd03af58ad2607771decc5928298811700 Mon Sep 17 00:00:00 2001 From: SeungMin Lee Date: Sat, 19 Apr 2025 16:25:26 +0900 Subject: [PATCH 4/5] longest consecutive sequence --- longest-consecutive-sequence/iam-edwin.java | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 longest-consecutive-sequence/iam-edwin.java diff --git a/longest-consecutive-sequence/iam-edwin.java b/longest-consecutive-sequence/iam-edwin.java new file mode 100644 index 000000000..07a8b7109 --- /dev/null +++ b/longest-consecutive-sequence/iam-edwin.java @@ -0,0 +1,26 @@ +class Solution { + public int longestConsecutive(int[] nums) { + Set set = Arrays.stream(nums) + .boxed() + .collect(Collectors.toSet()); + + return set.stream() + .map(num -> { + if (set.contains(num - 1)) { + return 0; + } + + int consecutiveLength = 1; + + while (set.contains(num + 1)) { + consecutiveLength += 1; + num += 1; + } + + return consecutiveLength; + }) + .mapToInt(num -> num) + .max() + .orElse(0); + } +} From 3ef46b9026161af0a6896d0500b31189557d838f Mon Sep 17 00:00:00 2001 From: SeungMin Lee Date: Sat, 19 Apr 2025 16:56:03 +0900 Subject: [PATCH 5/5] house robber --- house-robber/iam-edwin.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 house-robber/iam-edwin.java diff --git a/house-robber/iam-edwin.java b/house-robber/iam-edwin.java new file mode 100644 index 000000000..ad2704b29 --- /dev/null +++ b/house-robber/iam-edwin.java @@ -0,0 +1,13 @@ +class Solution { + public int rob(int[] nums) { + int[] result = new int[nums.length + 2]; + + for (int index = nums.length - 1; index >= 0; index--) { + int robFirst = nums[index] + result[index + 2]; + int passFirst = result[index + 1]; + result[index] = Integer.max(robFirst, passFirst); + } + + return result[0]; + } +}