Skip to content

Commit 7dc40f7

Browse files
authored
Added tags 10-24, 864.
1 parent 66e6c5f commit 7dc40f7

File tree

16 files changed

+98
-67
lines changed

16 files changed

+98
-67
lines changed
Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,41 @@
11
package g0001_0100.s0010_regular_expression_matching
22

33
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #String #Dynamic_Programming #Recursion
4+
// #2022_03_29_Time_234_ms_(85.18%)_Space_35.8_MB_(82.10%)
45

56
class Solution {
6-
private lateinit var cache: Array<Array<Boolean?>>
7-
87
fun isMatch(s: String, p: String): Boolean {
9-
cache = Array(s.length + 1) { arrayOfNulls(p.length + 1) }
10-
return isMatch(s, p, 0, 0)
8+
val n = s.length
9+
val m = p.length
10+
return solve(n - 1, m - 1, s, p)
1111
}
1212

13-
private fun isMatch(s: String, p: String, i: Int, j: Int): Boolean {
14-
if (j == p.length) {
15-
return i == s.length
13+
private fun solve(i: Int, j: Int, s: String, p: String): Boolean {
14+
if (j < 0) {
15+
return i < 0
16+
}
17+
if (i < 0) {
18+
return p[j] == '*' && solve(i, j - 2, s, p)
1619
}
17-
val result: Boolean
18-
if (cache[i][j] != null) {
19-
return cache[i][j]!!
20+
// simple char matching
21+
// if s char matchs with p char or it can be '.'
22+
if (s[i] == p[j] || p[j] == '.') {
23+
return solve(i - 1, j - 1, s, p)
2024
}
21-
val firstMatch = i < s.length && (s[i] == p[j] || p[j] == '.')
22-
result = if (j + 1 < p.length && p[j + 1] == '*') {
23-
firstMatch && isMatch(s, p, i + 1, j) || isMatch(s, p, i, j + 2)
25+
return if (p[j] == '*') {
26+
// if s char matches with p char or it can be '.'
27+
if (s[i] == p[j - 1] || p[j - 1] == '.') {
28+
solve(i - 1, j, s, p) || solve(i, j - 2, s, p)
29+
} else {
30+
solve(
31+
i,
32+
j - 2,
33+
s,
34+
p
35+
)
36+
}
2437
} else {
25-
firstMatch && isMatch(s, p, i + 1, j + 1)
38+
false
2639
}
27-
cache[i][j] = result
28-
return result
2940
}
3041
}

src/main/kotlin/g0001_0100/s0011_container_with_most_water/Solution.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package g0001_0100.s0011_container_with_most_water
22

33
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Greedy #Two_Pointers
4-
// #2022_02_17_Time_3_ms_(91.89%)_Space_81.7_MB_(5.91%)
4+
// #Algorithm_II_Day_4_Two_Pointers #2022_03_29_Time_635_ms_(64.22%)_Space_82.6_MB_(63.74%)
55

66
class Solution {
77
fun maxArea(height: IntArray): Int {

src/main/kotlin/g0001_0100/s0012_integer_to_roman/Solution.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package g0001_0100.s0012_integer_to_roman
22

3-
// #Medium #String #Hash_Table #Math #2022_02_17_Time_7_ms_(70.99%)_Space_44.8_MB_(31.56%)
3+
// #Medium #String #Hash_Table #Math #2022_03_29_Time_300_ms_(72.89%)_Space_43.3_MB_(41.90%)
44

55
class Solution {
66
fun intToRoman(num: Int): String? {

src/main/kotlin/g0001_0100/s0013_roman_to_integer/Solution.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package g0001_0100.s0013_roman_to_integer
22

33
// #Easy #Top_Interview_Questions #String #Hash_Table #Math
4-
// #2022_02_17_Time_5_ms_(82.08%)_Space_45_MB_(29.21%)
4+
// #2022_03_29_Time_293_ms_(78.06%)_Space_38.2_MB_(81.58%)
55

66
class Solution {
77
fun romanToInt(s: String): Int {

src/main/kotlin/g0001_0100/s0014_longest_common_prefix/Solution.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package g0001_0100.s0014_longest_common_prefix
22

3-
// #Easy #Top_Interview_Questions #String
3+
// #Easy #Top_Interview_Questions #String #2022_03_29_Time_269_ms_(48.51%)_Space_34.8_MB_(98.92%)
44

5-
internal class Solution {
5+
class Solution {
66
fun longestCommonPrefix(strs: Array<String>): String {
77
if (strs.size < 1) {
88
return ""

src/main/kotlin/g0001_0100/s0015_3sum/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package g0001_0100.s0015_3sum
22

33
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Sorting #Two_Pointers
4-
// #2022_02_17_Time_29_ms_(68.11%)_Space_59.7_MB_(23.79%)
4+
// #Data_Structure_II_Day_1_Array #Algorithm_II_Day_3_Two_Pointers
5+
// #2022_03_29_Time_1059_ms_(55.28%)_Space_77.6_MB_(79.97%)
56

67
import java.util.Arrays
78
import kotlin.collections.ArrayList

src/main/kotlin/g0001_0100/s0016_3sum_closest/Solution.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package g0001_0100.s0016_3sum_closest
22

3-
// #Medium #Array #Sorting #Two_Pointers
3+
// #Medium #Array #Sorting #Two_Pointers #2022_03_29_Time_219_ms_(89.56%)_Space_38_MB_(78.02%)
44

55
import java.util.Arrays
66

src/main/kotlin/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package g0001_0100.s0017_letter_combinations_of_a_phone_number
22

33
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #String #Hash_Table #Backtracking
4+
// #Algorithm_II_Day_11_Recursion_Backtracking
5+
// #2022_03_29_Time_132_ms_(100.00%)_Space_35.3_MB_(96.41%)
46

57
class Solution {
68
fun letterCombinations(digits: String): List<String> {
Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,55 @@
11
package g0001_0100.s0018_4sum
22

3-
// #Medium #Array #Sorting #Two_Pointers
3+
// #Medium #Array #Sorting #Two_Pointers #2022_03_29_Time_467_ms_(81.25%)_Space_44.4_MB_(82.81%)
44

55
import java.util.Arrays
66

77
class Solution {
8-
fun fourSum(nums: IntArray, target: Int): List<List<Int>> {
9-
val list: MutableList<List<Int>> = ArrayList()
8+
fun fourSum(nums: IntArray, target: Int): List<List<Int?>?> {
9+
var list: MutableList<List<Int?>?> = ArrayList()
10+
var i: Int
11+
var j: Int
12+
var k: Int
13+
var l: Int
1014
Arrays.sort(nums)
11-
val n = nums.size
12-
if (n == 0) {
13-
return list
14-
}
15-
for (a in 0 until n - 3) {
16-
if (a > 0 && nums[a] == nums[a - 1]) {
15+
i = 0
16+
while (i < nums.size - 3) {
17+
if (i > 0 && nums[i] == nums[i - 1]) {
18+
i++
1719
continue
1820
}
19-
for (d in n - 1 downTo a + 2 + 1) {
20-
if (d < n - 1 && nums[d] == nums[d + 1]) {
21-
continue
22-
}
23-
var b = a + 1
24-
var c = d - 1
25-
val min = nums[a] + nums[d] + nums[b] + nums[b + 1]
26-
if (min > target) {
21+
j = i + 1
22+
while (j < nums.size - 2) {
23+
if (j > i + 1 && nums[j] == nums[j - 1]) {
24+
j++
2725
continue
2826
}
29-
val max = nums[a] + nums[d] + nums[c] + nums[c - 1]
30-
if (max < target) {
31-
break
32-
}
33-
while (c > b) {
34-
val sum = nums[a] + nums[b] + nums[c] + nums[d]
35-
if (sum > target) {
36-
c--
37-
} else if (sum < target) {
38-
b++
39-
} else {
40-
list.add(Arrays.asList(nums[a], nums[b], nums[c], nums[d]))
41-
while (c > b && nums[b] == nums[b + 1]) {
42-
b++
43-
}
44-
while (c > b && nums[c] == nums[c - 1]) {
45-
c--
27+
k = j + 1
28+
l = nums.size - 1
29+
while (k < l) {
30+
val sum = nums[i] + nums[j] + nums[k] + nums[l]
31+
if (sum == target) {
32+
val l1 = ArrayList<Int?>()
33+
l1.add(nums[i])
34+
l1.add(nums[j])
35+
l1.add(nums[k])
36+
l1.add(nums[l])
37+
list.add(l1)
38+
l--
39+
if (k < l && nums[l] == nums[l + 1]) {
40+
l--
4641
}
47-
b++
48-
c--
42+
} else if (sum > target) {
43+
l--
44+
} else {
45+
k++
4946
}
5047
}
48+
j++
5149
}
50+
i++
5251
}
52+
list = ArrayList(LinkedHashSet(list))
5353
return list
5454
}
5555
}
Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
package g0001_0100.s0019_remove_nth_node_from_end_of_list
22

33
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Two_Pointers #Linked_List
4+
// #Algorithm_I_Day_5_Two_Pointers #2022_03_29_Time_172_ms_(85.17%)_Space_35_MB_(74.14%)
45

56
import com_github_leetcode.ListNode
67

8+
/*
9+
* Example:
10+
* var li = ListNode(5)
11+
* var v = li.`val`
12+
* Definition for singly-linked list.
13+
* class ListNode(var `val`: Int) {
14+
* var next: ListNode? = null
15+
* }
16+
*/
717
class Solution {
8-
var n = 0
18+
private var n = 0
19+
920
fun removeNthFromEnd(head: ListNode?, n: Int): ListNode? {
1021
this.n = n
1122
val node = ListNode(0, head)
1223
removeNth(node)
13-
return node?.next
24+
return node.next
1425
}
1526

1627
private fun removeNth(node: ListNode?) {
@@ -20,7 +31,7 @@ class Solution {
2031
removeNth(node.next)
2132
n--
2233
if (n == 0) {
23-
node.next = node?.next?.next
34+
node.next = node.next?.next
2435
}
2536
}
2637
}

src/main/kotlin/g0001_0100/s0020_valid_parentheses/Solution.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package g0001_0100.s0020_valid_parentheses
22

33
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #String #Stack
4-
// #2022_02_17_Time_3_ms_(53.65%)_Space_42.1_MB_(17.58%)
4+
// #Data_Structure_I_Day_9_Stack_Queue #2022_03_29_Time_196_ms_(71.08%)_Space_34.7_MB_(40.99%)
55

66
import java.util.Stack
77

src/main/kotlin/g0001_0100/s0021_merge_two_sorted_lists/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package g0001_0100.s0021_merge_two_sorted_lists
22

33
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Linked_List #Recursion
4-
// #2022_02_17_Time_1_ms_(61.88%)_Space_42.8_MB_(22.76%)
4+
// #Data_Structure_I_Day_7_Linked_List #Algorithm_I_Day_10_Recursion_Backtracking
5+
// #2022_03_29_Time_148_ms_(99.90%)_Space_35.5_MB_(81.70%)
56

67
import com_github_leetcode.ListNode
78

src/main/kotlin/g0001_0100/s0022_generate_parentheses/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package g0001_0100.s0022_generate_parentheses
22

33
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #String #Dynamic_Programming
4-
// #Backtracking #2022_02_17_Time_1_ms_(87.91%)_Space_43.6_MB_(19.97%)
4+
// #Backtracking #Algorithm_II_Day_11_Recursion_Backtracking
5+
// #2022_03_29_Time_210_ms_(78.51%)_Space_37.3_MB_(76.72%)
56

67
class Solution {
78
fun generateParenthesis(n: Int): List<String> {

src/main/kotlin/g0001_0100/s0023_merge_k_sorted_lists/Solution.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package g0001_0100.s0023_merge_k_sorted_lists
22

33
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #Heap_Priority_Queue #Linked_List
4-
// #Divide_and_Conquer #Merge_Sort #2022_02_18_Time_1_ms_(100.00%)_Space_43.9_MB_(75.94%)
4+
// #Divide_and_Conquer #Merge_Sort #2022_03_29_Time_323_ms_(75.14%)_Space_43.3_MB_(68.27%)
55

66
import com_github_leetcode.ListNode
77

src/main/kotlin/g0001_0100/s0024_swap_nodes_in_pairs/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g0001_0100.s0024_swap_nodes_in_pairs
22

3-
// #Medium #Linked_List #Recursion #2022_02_18_Time_0_ms_(100.00%)_Space_41.9_MB_(22.86%)
3+
// #Medium #Linked_List #Recursion #Data_Structure_II_Day_12_Linked_List
4+
// #2022_03_29_Time_173_ms_(83.13%)_Space_34.6_MB_(41.93%)
45

56
import com_github_leetcode.ListNode
67

src/main/kotlin/g0801_0900/s0864_shortest_path_to_get_all_keys/Solution.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package g0801_0900.s0864_shortest_path_to_get_all_keys
22

3+
// #Hard #Breadth_First_Search #Bit_Manipulation
4+
// #2022_03_29_Time_176_ms_(100.00%)_Space_36.3_MB_(100.00%)
5+
36
import java.util.LinkedList
47
import java.util.Queue
58

0 commit comments

Comments
 (0)