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