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 + } +} 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]; + } +} 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); + } +} 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() + } +} 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() + } +}