From 21b4200d3d451b72c03c07b9ae9b61fe045f9c47 Mon Sep 17 00:00:00 2001 From: Aahi Awasthee Date: Sun, 21 Dec 2025 00:31:19 -0600 Subject: [PATCH] Solved Array Problems --- disappearing-numbers.java | 22 +++++++++++++++++ game-of-life.java | 51 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 disappearing-numbers.java create mode 100644 game-of-life.java diff --git a/disappearing-numbers.java b/disappearing-numbers.java new file mode 100644 index 00000000..ec3478fc --- /dev/null +++ b/disappearing-numbers.java @@ -0,0 +1,22 @@ +//TC: O(n) +//SC: O(1) + +class Solution { + public List findDisappearedNumbers(int[] nums) { + int n = nums.length; + List result = new ArrayList<>(); + for (int i = 0; i < n; i++) { + int idx = Math.abs(nums[i]) - 1; + if (nums[idx] > 0) { + nums[idx] = nums[idx] * -1; + } + } + + for (int i = 0; i < n; i++) { + if(nums[i] > 0){ + result.add(i+1); + } + } + return result; + } +} \ No newline at end of file diff --git a/game-of-life.java b/game-of-life.java new file mode 100644 index 00000000..866799e0 --- /dev/null +++ b/game-of-life.java @@ -0,0 +1,51 @@ +//TC: O(m*n) +//SC: O(1) + + +class Solution { + public void gameOfLife(int[][] board) { + int m = board.length; + int n = board[0].length; + + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + int countLive = countLives(board, i, j); + if (board[i][j] == 1 && (countLive < 2 || countLive > 3)) { + board[i][j] = 2; + } + if (board[i][j] == 0 && countLive == 3) { + board[i][j] = 3; + } + } + } + + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (board[i][j] == 2) { + board[i][j] = 0; + } else if (board[i][j] == 3) { + board[i][j] = 1; + } + } + } + + } + + private int countLives(int[][] board, int i, int j) { + int count = 0; + //r, b, l, t, tr,br,bl,tl + int[][] dirs = new int[][] { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 }, { -1, 1 }, { 1, 1 }, { 1, -1 }, + { -1, -1 } }; + + for (int[] dir : dirs) { + int nr = i + dir[0]; + int nc = j + dir[1]; + + //bounds check + if(nr >= 0 && nr < board.length && nc >=0 && nc < board[0].length && (board[nr][nc] == 1 || board[nr][nc] == 2)) { + count++; + } + } + return count; + } +} \ No newline at end of file