From 3ca58716fe355cd5b12c77b2e5736132166a087c Mon Sep 17 00:00:00 2001 From: sora0319 Date: Mon, 12 May 2025 19:52:21 +0900 Subject: [PATCH 1/5] solve reverse linked list --- reverse-linked-list/sora0319.java | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 reverse-linked-list/sora0319.java diff --git a/reverse-linked-list/sora0319.java b/reverse-linked-list/sora0319.java new file mode 100644 index 000000000..43d88a44e --- /dev/null +++ b/reverse-linked-list/sora0319.java @@ -0,0 +1,28 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode reverseList(ListNode head) { + if(head == null) return null; + + ListNode backward = null; + ListNode forward = head; + + while(forward != null){ + forward = head.next; + head.next = backward; + backward = head; + if(forward != null) head = forward; + } + + return head; + } +} + From 7230f42ce4c0b8011f16fe62de348d3d184b7476 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Tue, 13 May 2025 08:39:23 +0900 Subject: [PATCH 2/5] solve longest substring without repeating characters --- .../sora0319.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 longest-substring-without-repeating-characters/sora0319.java diff --git a/longest-substring-without-repeating-characters/sora0319.java b/longest-substring-without-repeating-characters/sora0319.java new file mode 100644 index 000000000..c4190120a --- /dev/null +++ b/longest-substring-without-repeating-characters/sora0319.java @@ -0,0 +1,33 @@ +class Solution { + public int lengthOfLongestSubstring(String s) { + Map characters = new HashMap<>(); + int maxLength = 0; + int length = 0; + int start = 0; + + for(int i = 0; i < s.length(); i++){ + if(!characters.containsKey(s.charAt(i))){ + characters.put(s.charAt(i), i); + length++; + } + else{ + maxLength = Math.max(length, maxLength); + + int place = characters.get(s.charAt(i)); + if(place < start){ + characters.put(s.charAt(i), i); + length++; + continue; + } + + length = i - place; + start = place + 1; + characters.put(s.charAt(i), i); + } + } + maxLength = Math.max(length, maxLength); + + return maxLength; + } +} + From 86c96c33f468820343779a38943d1bdc204daa66 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Tue, 13 May 2025 14:52:26 +0900 Subject: [PATCH 3/5] solve number of island --- number-of-islands/sora0319.java | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 number-of-islands/sora0319.java diff --git a/number-of-islands/sora0319.java b/number-of-islands/sora0319.java new file mode 100644 index 000000000..a4ae315eb --- /dev/null +++ b/number-of-islands/sora0319.java @@ -0,0 +1,51 @@ +class Solution { + public int numIslands(char[][] grid) { + Queue island = new LinkedList<>(); + int N = grid.length; + int M = grid[0].length; + boolean[][] visited = new boolean[N][M]; + int count = 0; + + for(int i = 0; i < N; i++){ + for(int j = 0; j < M; j++){ + if(!visited[i][j] && grid[i][j] == '1'){ + island.offer(new Pair(i, j)); + visited[i][j] = true; + bfs(grid, visited, island); + count++; + } + } + } + return count; + } + public void bfs(char[][] grid, boolean[][] visited, Queue island){ + int[] mx = {-1, 1, 0, 0}; + int[] my = {0, 0, -1, 1}; + + + while(!island.isEmpty()){ + Pair p = island.poll(); + for(int i = 0; i < 4; i++){ + int nx = mx[i] + p.x; + int ny = my[i] + p.y; + + if(nx < 0 || ny < 0|| nx >= grid.length || ny >= grid[0].length) continue; + if(visited[nx][ny] || grid[nx][ny] == '0') continue; + + island.offer(new Pair(nx, ny)); + visited[nx][ny] = true; + } + + } + } + + class Pair{ + int x; + int y; + Pair(int x, int y){ + this.x = x; + this.y = y; + } + } +} + From ab5451ba4626ed920309657a1adb49081028beb2 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Tue, 13 May 2025 16:01:29 +0900 Subject: [PATCH 4/5] solve unique paths --- unique-paths/sora0319.java | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 unique-paths/sora0319.java diff --git a/unique-paths/sora0319.java b/unique-paths/sora0319.java new file mode 100644 index 000000000..727334173 --- /dev/null +++ b/unique-paths/sora0319.java @@ -0,0 +1,44 @@ +class Solution { + public int uniquePaths(int m, int n) { + int[][] pathN = new int[m][n]; + boolean[][] visited = new boolean[m][n]; + pathN[0][0] = 1; + + bfs(pathN, visited); + return pathN[m-1][n-1]; + } + public void bfs(int[][] pathN, boolean[][] visited){ + Queue paths = new LinkedList<>(); + int[] mx = {0, 1}; + int[] my = {1, 0}; + + paths.offer(new Pair(0,0)); + + while(!paths.isEmpty()){ + Pair p = paths.poll(); + + for(int i = 0; i < 2; i++){ + int nx = mx[i] + p.x; + int ny = my[i] + p.y; + + if(nx >= pathN.length || ny >= pathN[0].length) continue; + pathN[nx][ny] += pathN[p.x][p.y]; + if(!visited[nx][ny]){ + paths.offer(new Pair(nx, ny)); + visited[nx][ny] = true; + } + + } + } + } + + class Pair{ + int x; + int y; + Pair(int x, int y){ + this.x = x; + this.y = y; + } + } +} + From 05ef73ec3f7fa02a40769262019c5aa8139ea39a Mon Sep 17 00:00:00 2001 From: sora0319 Date: Thu, 15 May 2025 11:12:17 +0900 Subject: [PATCH 5/5] solve set matrix zeros --- set-matrix-zeroes/sora0319.java | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 set-matrix-zeroes/sora0319.java diff --git a/set-matrix-zeroes/sora0319.java b/set-matrix-zeroes/sora0319.java new file mode 100644 index 000000000..a5b7e1b38 --- /dev/null +++ b/set-matrix-zeroes/sora0319.java @@ -0,0 +1,51 @@ +class Solution { + public void setZeroes(int[][] matrix) { + int M = matrix.length; + int N = matrix[0].length; + + boolean firstRow = false; + boolean firstCol = false; + + for(int i = 0; i < M; i++){ + if(matrix[i][0] == 0){ + firstRow = true; + break; + } + } + + for(int j = 0; j < N; j++){ + if(matrix[0][j] == 0){ + firstCol = true; + break; + } + } + + for(int i = 0; i < M; i++){ + for(int j = 0; j < N; j++){ + if(matrix[i][j] == 0){ + matrix[i][0] = 0; + matrix[0][j] = 0; + } + } + } + + for(int i = 1; i < M; i++){ + for(int j = 1; j < N; j++){ + if(matrix[i][0] == 0 || matrix[0][j] == 0) matrix[i][j] = 0; + } + } + + if(firstRow){ + for(int i = 0; i < M; i++){ + matrix[i][0] = 0; + } + } + + if(firstCol){ + for(int j = 0; j < N; j++){ + matrix[0][j] = 0; + } + } + } +} +