From 428e617fe1b1c1bca2ec766e65df8c062e5430ed Mon Sep 17 00:00:00 2001 From: Jeongwon Na Date: Mon, 20 Oct 2025 16:26:09 +0200 Subject: [PATCH 1/2] counting bits solution --- counting-bits/njngwn.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 counting-bits/njngwn.java diff --git a/counting-bits/njngwn.java b/counting-bits/njngwn.java new file mode 100644 index 000000000..8619c9fbd --- /dev/null +++ b/counting-bits/njngwn.java @@ -0,0 +1,11 @@ +class Solution { + public int[] countBits(int n) { + int[] bitCountArr = new int[n+1]; + + for (int i = 1; i <= n; ++i) { + bitCountArr[i] = bitCountArr[i/2] + (i & 1); + } + + return bitCountArr; + } +} From bdfad3609e68c6fd80299cd1bbb48abc64703a6c Mon Sep 17 00:00:00 2001 From: Jeongwon Na Date: Mon, 20 Oct 2025 16:29:13 +0200 Subject: [PATCH 2/2] binary-tree-level-order-traversal solution --- binary-tree-level-order-traversal/njngwn.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 binary-tree-level-order-traversal/njngwn.java diff --git a/binary-tree-level-order-traversal/njngwn.java b/binary-tree-level-order-traversal/njngwn.java new file mode 100644 index 000000000..5d55d4981 --- /dev/null +++ b/binary-tree-level-order-traversal/njngwn.java @@ -0,0 +1,43 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + // Time Complexity: O(n), n: the number of nodes + // Space Complexity: O(w), w: max width of tree + + public List> levelOrder(TreeNode root) { + List> results = new ArrayList<>(); + if (root == null) return results; + + Queue levelQueue = new LinkedList<>(); // use queue considering FIFO + levelQueue.offer(root); + + while (!levelQueue.isEmpty()) { + ArrayList level = new ArrayList<>(); // node values list for each level + int size = levelQueue.size(); + + for (int i = 0; i < size; ++i) { + TreeNode node = levelQueue.poll(); + level.add(node.val); + if(node.left != null) levelQueue.offer(node.left); + if(node.right != null) levelQueue.offer(node.right); + } + + results.add(level); + } + + return results; + } +}