diff --git a/contains-duplicate/Real-Reason.kt b/contains-duplicate/Real-Reason.kt new file mode 100644 index 000000000..c745379d3 --- /dev/null +++ b/contains-duplicate/Real-Reason.kt @@ -0,0 +1,10 @@ +package leetcode_study + +class SolutionContainsDuplicate { + fun containsDuplicate(nums: IntArray): Boolean { + val size = nums.size + val numsToSet = nums.toSet() + + return size != numsToSet.size + } +} diff --git a/longest-consecutive-sequence/Real-Reason.kt b/longest-consecutive-sequence/Real-Reason.kt new file mode 100644 index 000000000..d0f1c2c29 --- /dev/null +++ b/longest-consecutive-sequence/Real-Reason.kt @@ -0,0 +1,24 @@ +package leetcode_study +class SolutionLongestConsecutiveSequence { + fun longestConsecutive(nums: IntArray): Int { + nums.sort() + var cnt = 0 + var maxCnt = 0 + nums.forEachIndexed { i, _ -> + if (i == 0) { + cnt = 1 + } + else if (nums[i-1] == nums[i] - 1) { + cnt++ + } + else if (nums[i - 1] == nums[i]) { + return@forEachIndexed + } else { + cnt = 1 + } + maxCnt = maxOf(maxCnt, cnt) + } + + return maxCnt + } +} diff --git a/top-k-frequent-elements/Real-Reason.kt b/top-k-frequent-elements/Real-Reason.kt new file mode 100644 index 000000000..b88a28641 --- /dev/null +++ b/top-k-frequent-elements/Real-Reason.kt @@ -0,0 +1,15 @@ +package leetcode_study +class SolutionTopKFrequentElements { + fun topKFrequent(nums: IntArray, k: Int): IntArray { + val numsCount = mutableMapOf() + for (num in nums) { + val value = numsCount.getOrDefault(num, 0) + numsCount[num] = value + 1 + } + val sortedNumsCount = numsCount.entries + .sortedByDescending { it.value } + .associate { it.toPair() } + + return sortedNumsCount.keys.take(k).toIntArray() + } +} diff --git a/valid-palindrome/Real-Reason.kt b/valid-palindrome/Real-Reason.kt new file mode 100644 index 000000000..23ae90f07 --- /dev/null +++ b/valid-palindrome/Real-Reason.kt @@ -0,0 +1,27 @@ +package leetcode_study + +class SolutionValidPalindrome { + fun isPalindrome(s: String): Boolean { + val sToCharArray = s.toCharArray() + var startIndex = 0 + var endIndex = sToCharArray.size - 1 + while (startIndex < endIndex) { + if (!sToCharArray[startIndex].isLetterOrDigit() || sToCharArray[startIndex].isWhitespace()) { + startIndex++ + continue + } + if (!sToCharArray[endIndex].isLetterOrDigit() || sToCharArray[endIndex].isWhitespace()) { + endIndex-- + continue + } + if (sToCharArray[startIndex].lowercase() == sToCharArray[endIndex].lowercase()) { + startIndex++ + endIndex-- + } else { + return false + } + } + + return true + } +}