Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8586027

Browse files
authored
Merge pull request #814 from Raven1233/main
Added 15-3Sum.kt and 208-Implement-Trie(Prefix-Tree).kt
2 parents dd12ed1 + 07548ca commit 8586027

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

kotlin/15-3Sum.kt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Solution {
2+
fun threeSum(nums: IntArray): List<List<Int>> {
3+
if(nums.size<3){
4+
return List(0){List<Int>(0){0}}
5+
}
6+
if(nums.size==3){
7+
return if(nums.sum()==0) listOf(nums.toList()) else List(0){List<Int>(0){0}}
8+
}
9+
nums.sort()
10+
val a = MutableList(0){List(3){0}}
11+
val s = nums.size
12+
var j = 0
13+
var k = 0
14+
15+
for(i in 0 until s-2){
16+
if(i!=0 && nums[i]==nums[i-1]){
17+
continue
18+
}
19+
j = i+1
20+
k = s-1
21+
while(j<k){
22+
if(nums[i]+nums[j]+nums[k]>0){
23+
k -= 1
24+
}
25+
else if(nums[i]+nums[j]+nums[k]<0){
26+
j += 1
27+
}
28+
else{
29+
a.add(listOf(nums[i], nums[j], nums[k]))
30+
j += 1
31+
k -= 1
32+
while(j<k && nums[j]==nums[j-1]){
33+
j+=1
34+
}
35+
while(k<j && nums[k]==nums[k+1]){
36+
k-=1
37+
}
38+
}
39+
}
40+
}
41+
return a
42+
}
43+
}

kotlin/208-Implement-Trie.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Trie() {
2+
private class Node {
3+
val nxt = Array(26) { null as Node? }
4+
var end = false
5+
}
6+
7+
private val root = Node()
8+
9+
fun insert(word: String) {
10+
var cur = root
11+
for (c in word) {
12+
cur = cur.nxt[c - 'a'] ?: Node().also { cur.nxt[c - 'a'] = it }
13+
}
14+
cur.end = true
15+
}
16+
17+
fun search(word: String): Boolean = internalSearch(word, prefix = false)
18+
19+
fun startsWith(prefix: String): Boolean = internalSearch(prefix, prefix = true)
20+
21+
private fun internalSearch(word: String, prefix: Boolean): Boolean {
22+
var cur = root
23+
for (c in word) {
24+
cur = cur.nxt[c - 'a'] ?: return false
25+
}
26+
return cur.end || prefix
27+
}
28+
}
29+
/**
30+
* Your Trie object will be instantiated and called as such:
31+
* var obj = Trie()
32+
* obj.insert(word)
33+
* var param_2 = obj.search(word)
34+
* var param_3 = obj.startsWith(prefix)
35+
*/

0 commit comments

Comments
 (0)