1 <= jug1Capacity, jug2Capacity, targetCapacity <= 106
\ No newline at end of file
diff --git a/src/main/java/g0301_0400/s0367_valid_perfect_square/Solution.java b/src/main/java/g0301_0400/s0367_valid_perfect_square/Solution.java
new file mode 100644
index 000000000..abfb3b89e
--- /dev/null
+++ b/src/main/java/g0301_0400/s0367_valid_perfect_square/Solution.java
@@ -0,0 +1,32 @@
+package g0301_0400.s0367_valid_perfect_square;
+
+// #Easy #Math #Binary_Search
+
+public class Solution {
+ public boolean isPerfectSquare(int num) {
+ if (num == 0) {
+ // If num is 0 return false
+ return false;
+ }
+ // long datatype can holds huge number.
+ long start = 0;
+ long end = num;
+ long mid = 0;
+ while (start <= end) { + // untill start is lesser or equal to end do this + // Finding middle value + mid = start + (end - start) / 2; + if (mid * mid == num) { + // if mid*mid == num return true + return true; + } else if (mid * mid < num) { + // if num is greater than mid*mid then make start = mid + 1 + start = mid + 1; + } else if (mid * mid> num) {
+ // if num is lesser than mid*mid then make end = mid - 1
+ end = mid - 1;
+ }
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/g0301_0400/s0367_valid_perfect_square/readme.md b/src/main/java/g0301_0400/s0367_valid_perfect_square/readme.md
new file mode 100644
index 000000000..d56fdbebd
--- /dev/null
+++ b/src/main/java/g0301_0400/s0367_valid_perfect_square/readme.md
@@ -0,0 +1,23 @@
+367\. Valid Perfect Square
+
+Easy
+
+Given a **positive** integer _num_, write a function which returns True if _num_ is a perfect square else False.
+
+**Follow up:** **Do not** use any built-in library function such as `sqrt`.
+
+**Example 1:**
+
+**Input:** num = 16
+
+**Output:** true
+
+**Example 2:**
+
+**Input:** num = 14
+
+**Output:** false
+
+**Constraints:**
+
+* `1 <= num <= 2^31 - 1` \ No newline at end of file diff --git a/src/main/java/g0301_0400/s0368_largest_divisible_subset/Solution.java b/src/main/java/g0301_0400/s0368_largest_divisible_subset/Solution.java new file mode 100644 index 000000000..c13ea57e6 --- /dev/null +++ b/src/main/java/g0301_0400/s0368_largest_divisible_subset/Solution.java @@ -0,0 +1,63 @@ +package g0301_0400.s0368_largest_divisible_subset; + +// #Medium #Array #Dynamic_Programming #Math #Sorting + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Solution { + // Helper class containing value and an arraylist + public class Helper { + int val; + List1 <= nums[i] <= 2 * 109
+* All the integers in `nums` are **unique**.
\ No newline at end of file
diff --git a/src/test/java/g0301_0400/s0365_water_and_jug_problem/SolutionTest.java b/src/test/java/g0301_0400/s0365_water_and_jug_problem/SolutionTest.java
new file mode 100644
index 000000000..2b63c9ecd
--- /dev/null
+++ b/src/test/java/g0301_0400/s0365_water_and_jug_problem/SolutionTest.java
@@ -0,0 +1,23 @@
+package g0301_0400.s0365_water_and_jug_problem;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+class SolutionTest {
+ @Test
+ void canMeasureWater() {
+ assertThat(new Solution().canMeasureWater(3, 5, 4), equalTo(true));
+ }
+
+ @Test
+ void canMeasureWater2() {
+ assertThat(new Solution().canMeasureWater(2, 6, 5), equalTo(false));
+ }
+
+ @Test
+ void canMeasureWater3() {
+ assertThat(new Solution().canMeasureWater(1, 2, 3), equalTo(true));
+ }
+}
diff --git a/src/test/java/g0301_0400/s0367_valid_perfect_square/SolutionTest.java b/src/test/java/g0301_0400/s0367_valid_perfect_square/SolutionTest.java
new file mode 100644
index 000000000..2faa7d5a3
--- /dev/null
+++ b/src/test/java/g0301_0400/s0367_valid_perfect_square/SolutionTest.java
@@ -0,0 +1,18 @@
+package g0301_0400.s0367_valid_perfect_square;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+class SolutionTest {
+ @Test
+ void isPerfectSquare() {
+ assertThat(new Solution().isPerfectSquare(16), equalTo(true));
+ }
+
+ @Test
+ void isPerfectSquare2() {
+ assertThat(new Solution().isPerfectSquare(14), equalTo(false));
+ }
+}
diff --git a/src/test/java/g0301_0400/s0368_largest_divisible_subset/SolutionTest.java b/src/test/java/g0301_0400/s0368_largest_divisible_subset/SolutionTest.java
new file mode 100644
index 000000000..6d7ac78fb
--- /dev/null
+++ b/src/test/java/g0301_0400/s0368_largest_divisible_subset/SolutionTest.java
@@ -0,0 +1,24 @@
+package g0301_0400.s0368_largest_divisible_subset;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import org.junit.jupiter.api.Test;
+
+class SolutionTest {
+ @Test
+ void largestDivisibleSubset() {
+ assertThat(
+ new Solution().largestDivisibleSubset(new int[] {1, 2, 3}),
+ equalTo(new ArrayList