If you are not familiar with this exercise, go and check the following URL:

*As always, follow the comments for each line on the solution.*

From my comments on the code, if you have any questions or comments, feel free to reach out to me.

If you are not familiar with this exercise, go and check the following URL:

*As always, follow the comments for each line on the solution.*

From my comments on the code, if you have any questions or comments, feel free to reach out to me.

Given an integer array `nums`

, move all `0`

's to the end of it while maintaining the relative order of the non-zero elements.

**Note** that you must do this in-place without making a copy of the array.

**Example 1:**

**Input:** nums = [0,1,0,3,12]

**Output:** [1,3,12,0,0]

**Example 2:**

**Input:** nums = [0]

**Output…**

Given an integer `n`

, return *the number of prime numbers that are strictly less than* `n`

.

**Example 1:**

**Input:** n = 10

**Output:** 4

**Explanation:** There are 4 prime numbers less than 10, they are 2, 3, 5, 7.

**Example 2:**

**Input:** n = 0

**Output:** 0

**Example 3:**

**Input…**

Given the roots of two binary trees `p`

and `q`

, write a function to check if they are the same or not.

Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.

**Example 1:**

Given the `root`

of a binary tree, return *the level order traversal of its nodes' values*. (i.e., from left to right, level by level).

**Example 1:**

Given the `root`

of a binary tree, return *its maximum depth*.

A binary tree’s **maximum depth** is the number of nodes along the longest path from the root node down to the farthest leaf node.

**Example 1:**