Skip to content

Commit 46f899a

Browse files
Merge pull request #1881 from hyunjung-choi/main
[hyunjung-choi] WEEK 07 solutions
2 parents f30bebf + 3313e13 commit 46f899a

File tree

5 files changed

+162
-0
lines changed

5 files changed

+162
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* 시간복잡도: O(n)
3+
* 공간복잡도: O(min(m,n)) - m은 문자셋 크기
4+
*/
5+
6+
class Solution {
7+
fun lengthOfLongestSubstring(s: String): Int {
8+
val seen = mutableSetOf<Char>()
9+
var left = 0
10+
var maxLength = 0
11+
12+
for (right in s.indices) {
13+
while (s[right] in seen) {
14+
seen.remove(s[left])
15+
left++
16+
}
17+
18+
seen.add(s[right])
19+
maxLength = maxOf(maxLength, right - left + 1)
20+
}
21+
22+
return maxLength
23+
}
24+
}

number-of-islands/hyunjung-choi.kt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* 시간복잡도: O(M × N)
3+
* 공간복잡도: O(M × N)
4+
*/
5+
6+
class Solution {
7+
fun numIslands(grid: Array<CharArray>): Int {
8+
if (grid.isEmpty() || grid[0].isEmpty()) return 0
9+
10+
val row = grid.size
11+
val column = grid[0].size
12+
var isIslandCount = 0
13+
14+
for (i in 0 until row) {
15+
for (j in 0 until column) {
16+
if (grid[i][j] == '1') {
17+
isIslandCount++
18+
dfs(grid, i, j, row, column)
19+
}
20+
}
21+
}
22+
23+
return isIslandCount
24+
}
25+
26+
private fun dfs(grid: Array<CharArray>, i: Int, j: Int, row: Int, column: Int) {
27+
if (i < 0 || i >= row || j < 0 || j >= column || grid[i][j] != '1') {
28+
return
29+
}
30+
31+
grid[i][j] = '0'
32+
33+
dfs(grid, i - 1, j, row, column)
34+
dfs(grid, i + 1, j, row, column)
35+
dfs(grid, i, j - 1, row, column)
36+
dfs(grid, i, j + 1, row, column)
37+
}
38+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* Example:
3+
* var li = ListNode(5)
4+
* var v = li.`val`
5+
* Definition for singly-linked list.
6+
* class ListNode(var `val`: Int) {
7+
* var next: ListNode? = null
8+
* }
9+
*/
10+
11+
class Solution {
12+
fun reverseList(head: ListNode?): ListNode? {
13+
var prev: ListNode? = null
14+
var current = head
15+
16+
while (current != null) {
17+
val next = current.next
18+
current.next = prev
19+
prev = current
20+
current = next
21+
}
22+
23+
return prev
24+
}
25+
}

set-matrix-zeroes/hyunjung-choi.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/**
2+
* 시간복잡도: O(m × n)
3+
* 공간복잡도: O(1)
4+
*/
5+
6+
class Solution {
7+
fun setZeroes(matrix: Array<IntArray>): Unit {
8+
val m = matrix.size
9+
val n = matrix[0].size
10+
11+
var firstRowHasZero = false
12+
var firstColumnHasZero = false
13+
14+
for (j in 0 until n) {
15+
if (matrix[0][j] == 0) {
16+
firstRowHasZero = true
17+
break
18+
}
19+
}
20+
21+
for (i in 0 until m) {
22+
if (matrix[i][0] == 0) {
23+
firstColumnHasZero = true
24+
break
25+
}
26+
}
27+
28+
for (i in 1 until m) {
29+
for (j in 1 until n) {
30+
if (matrix[i][j] == 0) {
31+
matrix[i][0] = 0
32+
matrix[0][j] = 0
33+
}
34+
}
35+
}
36+
37+
for (i in 1 until m) {
38+
for (j in 1 until n) {
39+
if (matrix[i][0] == 0 || matrix[0][j] == 0) {
40+
matrix[i][j] = 0
41+
}
42+
}
43+
}
44+
45+
for (j in 0 until n) {
46+
if (firstRowHasZero) {
47+
matrix[0][j] = 0
48+
}
49+
}
50+
51+
for (i in 0 until m) {
52+
if (firstColumnHasZero) {
53+
matrix[i][0] = 0
54+
}
55+
}
56+
}
57+
}

unique-paths/hyunjung-choi.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* 시간 복잡도: O(m * n)
3+
* 공간 복잡도: O(n)
4+
*/
5+
6+
class Solution {
7+
fun uniquePaths(m: Int, n: Int): Int {
8+
val dp = IntArray(n) { 1 }
9+
10+
for (i in 1 until m) {
11+
for (j in 1 until n) {
12+
dp[j] += dp[j - 1]
13+
}
14+
}
15+
16+
return dp[n - 1]
17+
}
18+
}

0 commit comments

Comments
 (0)