File tree Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ */
You can’t perform that action at this time.
0 commit comments