From 268b52cb5cac1c7544fa3abb7cdf4030681de295 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 07:04:43 +0200 Subject: [PATCH 01/34] Bump org.apache.maven.plugins:maven-source-plugin from 3.3.1 to 3.4.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a0c540658..11e225a81 100644 --- a/pom.xml +++ b/pom.xml @@ -123,7 +123,7 @@ org.apache.maven.plugins maven-source-plugin - 3.3.1 + 3.4.0 attach-sources From 5f9c5d66697b63700276bca2f35ea142b8c2cf73 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 9 Dec 2025 17:04:09 +0200 Subject: [PATCH 02/34] Gradle 9.2.1 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bad7c2462..23449a2b5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 2b6eadfd83f0937169e6e4fa43b736e2366c0be3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 05:43:49 +0200 Subject: [PATCH 03/34] Bump org.apache.maven.plugins:maven-compiler-plugin from 3.14.1 to 3.15.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 11e225a81..0fc6826a3 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.1 + 3.15.0 17 17 From ad7e6e2bc41432940081c98049f2aea00a2dd9cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 23:46:42 +0200 Subject: [PATCH 04/34] Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.4 to 3.5.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0fc6826a3..bb231698f 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.4 + 3.5.5 org.junit.jupiter From 8a17dd9b8d2e918ad44ad6243bb393954339134a Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 1 Apr 2026 14:30:04 +0300 Subject: [PATCH 05/34] Gradle 9.4.1 --- gradle/wrapper/gradle-wrapper.jar | Bin 45457 -> 48966 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8bdaf60c75ab801e22807dde59e12a8735a34077..d997cfc60f4cff0e7451d19d49a82fa986695d07 100644 GIT binary patch delta 39724 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ⅆA{k6{Sa_dPB>TF4Im=mf;z@rf2j7Tr#P>Bp9qL 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 delta 36423 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2b5..c61a118f7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685a0..739907dfd 100644 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. From 12a3afa4e3dc545ad50eb64b341bf682be2b9eb2 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Fri, 3 Apr 2026 17:46:20 +0300 Subject: [PATCH 06/34] Delete .circleci directory --- .circleci/config.yml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index b6c3379e9..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,26 +0,0 @@ -# Use the latest 2.1 version of CircleCI pipeline process engine. -# See: https://circleci.com/docs/configuration-reference -version: 2.1 - -# Define a job to be invoked later in a workflow. -# See: https://circleci.com/docs/configuration-reference/#jobs -jobs: - build-linux: - # Specify the execution environment. You can specify an image from Docker Hub or use one of our convenience images from CircleCI's Developer Hub. - # See: https://circleci.com/docs/configuration-reference/#executor-job - docker: - - image: cimg/openjdk:17.0.16 - # Add steps to the job - # See: https://circleci.com/docs/configuration-reference/#steps - steps: - - checkout - - run: - name: "Build gradle" - command: chmod +x gradlew && ./gradlew clean build - -# Orchestrate jobs using workflows -# See: https://circleci.com/docs/configuration-reference/#workflows -workflows: - say-hello-workflow: - jobs: - - build-linux From 41a4042769c52e79e262297bc3af4e33abde0da5 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 4 Apr 2026 11:35:30 +0300 Subject: [PATCH 07/34] Improved task 1968 --- .../Solution.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/g1901_2000/s1968_array_with_elements_not_equal_to_average_of_neighbors/Solution.java b/src/main/java/g1901_2000/s1968_array_with_elements_not_equal_to_average_of_neighbors/Solution.java index 946ce8d8e..b1cf4d977 100644 --- a/src/main/java/g1901_2000/s1968_array_with_elements_not_equal_to_average_of_neighbors/Solution.java +++ b/src/main/java/g1901_2000/s1968_array_with_elements_not_equal_to_average_of_neighbors/Solution.java @@ -5,6 +5,7 @@ import java.security.SecureRandom; import java.util.Random; +@SuppressWarnings("java:S2119") public class Solution { public int[] rearrangeArray(int[] nums) { Random random = new SecureRandom(); From 4ff07c93a49d63b180eaf8861a356b4ead318bce Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 4 Apr 2026 12:18:23 +0300 Subject: [PATCH 08/34] Updated readme --- README.md | 2108 ++++++++++++++++++++++++++--------------------------- 1 file changed, 1054 insertions(+), 1054 deletions(-) diff --git a/README.md b/README.md index e67e978c8..c7742d5ce 100644 --- a/README.md +++ b/README.md @@ -34,11 +34,6 @@ implementation 'com.github.javadev:leetcode-in-java:1.49' > ["For coding interview preparation, LeetCode is one of the best online resource providing a rich library of more than 300 real coding interview questions for you to practice from using one of the 7 supported languages - C, C++, Java, Python, C#, JavaScript, Ruby."](https://www.quora.com/How-effective-is-Leetcode-for-preparing-for-technical-interviews) ## -* [Level 1](#level-1) -* [Level 2](#level-2) -* [Udemy](#udemy) -* [Top Interview 150](#top-interview-150) -* [Data Structure I](#data-structure-i) * [Data Structure II](#data-structure-ii) * [Algorithm I](#algorithm-i) * [Algorithm II](#algorithm-ii) @@ -49,2068 +44,2073 @@ implementation 'com.github.javadev:leetcode-in-java:1.49' * [Programming Skills II](#programming-skills-ii) * [Graph Theory I](#graph-theory-i) * [SQL I](#sql-i) +* [Level 1](#level-1) +* [Level 2](#level-2) +* [Udemy](#udemy) +* [Top Interview 150](#top-interview-150) +* [Data Structure I](#data-structure-i) -### Level 1 +### Data Structure II -#### Day 1 Prefix Sum +#### Day 1 Array | | | | | | |-|-|-|-|-|- -| 1480 |[Running Sum of 1d Array](src/main/java/g1401_1500/s1480_running_sum_of_1d_array/Solution.java)| Easy | Array, Prefix_Sum | 0 | 100.00 -| 0724 |[Find Pivot Index](src/main/java/g0701_0800/s0724_find_pivot_index/Solution.java)| Easy | Array, Prefix_Sum, LeetCode_75_Prefix_Sum | 2 | 69.67 +| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 +| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 +| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 -#### Day 2 String +#### Day 2 Array | | | | | | |-|-|-|-|-|- -| 0205 |[Isomorphic Strings](src/main/java/g0201_0300/s0205_isomorphic_strings/Solution.java)| Easy | String, Hash_Table | 2 | 99.18 -| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 +| 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 +| 0706 |[Design HashMap](src/main/java/g0701_0800/s0706_design_hashmap/MyHashMap.java)| Easy | Array, Hash_Table, Design, Linked_List, Hash_Function | 13 | 95.71 -#### Day 3 Linked List +#### Day 3 Array | | | | | | |-|-|-|-|-|- -| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 -| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 +| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 +| 0059 |[Spiral Matrix II](src/main/java/g0001_0100/s0059_spiral_matrix_ii/Solution.java)| Medium | Array, Matrix, Simulation | 0 | 100.00 -#### Day 4 Linked List +#### Day 4 Array | | | | | | |-|-|-|-|-|- -| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 -| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0240 |[Search a 2D Matrix II](src/main/java/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Big_O_Time_O(n+m)_Space_O(1) | 5 | 99.92 +| 0435 |[Non-overlapping Intervals](src/main/java/g0401_0500/s0435_non_overlapping_intervals/Solution.java)| Medium | Array, Dynamic_Programming, Sorting, Greedy, LeetCode_75_Intervals | 96 | 47.37 -#### Day 5 Greedy +#### Day 5 Array | | | | | | |-|-|-|-|-|- -| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 -| 0409 |[Longest Palindrome](src/main/java/g0401_0500/s0409_longest_palindrome/Solution.java)| Easy | String, Hash_Table, Greedy | 2 | 92.90 +| 0334 |[Increasing Triplet Subsequence](src/main/java/g0301_0400/s0334_increasing_triplet_subsequence/Solution.java)| Medium | Array, Greedy, LeetCode_75_Array/String | 2 | 99.33 +| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 +| 0560 |[Subarray Sum Equals K](src/main/java/g0501_0600/s0560_subarray_sum_equals_k/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Prefix_Sum, Big_O_Time_O(n)_Space_O(n) | 22 | 95.17 -#### Day 6 Tree +#### Day 6 String | | | | | | |-|-|-|-|-|- -| 0589 |[N-ary Tree Preorder Traversal](src/main/java/g0501_0600/s0589_n_ary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Stack | 1 | 90.98 -| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 +| 0415 |[Add Strings](src/main/java/g0401_0500/s0415_add_strings/Solution.java)| Easy | String, Math, Simulation | 3 | 82.41 +| 0409 |[Longest Palindrome](src/main/java/g0401_0500/s0409_longest_palindrome/Solution.java)| Easy | String, Hash_Table, Greedy | 2 | 92.90 -#### Day 7 Binary Search +#### Day 7 String | | | | | | |-|-|-|-|-|- -| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 -| 0278 |[First Bad Version](src/main/java/g0201_0300/s0278_first_bad_version/Solution.java)| Easy | Binary_Search, Interactive | 15 | 87.89 +| 0290 |[Word Pattern](src/main/java/g0201_0300/s0290_word_pattern/Solution.java)| Easy | String, Hash_Table | 0 | 100.00 +| 0763 |[Partition Labels](src/main/java/g0701_0800/s0763_partition_labels/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Greedy, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 100.00 -#### Day 8 Binary Search Tree +#### Day 8 String | | | | | | |-|-|-|-|-|- -| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -| 0235 |[Lowest Common Ancestor of a Binary Search Tree](src/main/java/g0201_0300/s0235_lowest_common_ancestor_of_a_binary_search_tree/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 4 | 100.00 +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 +| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 -#### Day 9 Graph/BFS/DFS +#### Day 9 String | | | | | | |-|-|-|-|-|- -| 0733 |[Flood Fill](src/main/java/g0701_0800/s0733_flood_fill/Solution.java)| Easy | Array, Depth_First_Search, Breadth_First_Search, Matrix | 1 | 85.36 -| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 +| 0187 |[Repeated DNA Sequences](src/main/java/g0101_0200/s0187_repeated_dna_sequences/Solution.java)| Medium | String, Hash_Table, Bit_Manipulation, Sliding_Window, Hash_Function, Rolling_Hash | 29 | 77.11 +| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 -#### Day 10 Dynamic Programming +#### Day 10 Linked List | | | | | | |-|-|-|-|-|- -| 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 -| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 +| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -#### Day 11 Dynamic Programming +#### Day 11 Linked List | | | | | | |-|-|-|-|-|- -| 0746 |[Min Cost Climbing Stairs](src/main/java/g0701_0800/s0746_min_cost_climbing_stairs/Solution.java)| Easy | Array, Dynamic_Programming, LeetCode_75_DP/1D | 1 | 86.38 -| 0062 |[Unique Paths](src/main/java/g0001_0100/s0062_unique_paths/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Combinatorics, LeetCode_75_DP/Multidimensional, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 +| 0160 |[Intersection of Two Linked Lists](src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(M+N)_Space_O(1) | 1 | 99.92 +| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 -#### Day 12 Sliding Window/Two Pointer +#### Day 12 Linked List | | | | | | |-|-|-|-|-|- -| 0438 |[Find All Anagrams in a String](src/main/java/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 3 | 99.83 -| 0424 |[Longest Repeating Character Replacement](src/main/java/g0401_0500/s0424_longest_repeating_character_replacement/Solution.java)| Medium | String, Hash_Table, Sliding_Window | 5 | 95.15 +| 0024 |[Swap Nodes in Pairs](src/main/java/g0001_0100/s0024_swap_nodes_in_pairs/Solution.java)| Medium | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 -#### Day 13 Hashmap +#### Day 13 Linked List | | | | | | |-|-|-|-|-|- -| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 -| 0299 |[Bulls and Cows](src/main/java/g0201_0300/s0299_bulls_and_cows/Solution.java)| Medium | String, Hash_Table, Counting | 6 | 86.69 +| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 +| 0143 |[Reorder List](src/main/java/g0101_0200/s0143_reorder_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List, Recursion | 2 | 72.59 -#### Day 14 Stack +#### Day 14 Stack Queue | | | | | | |-|-|-|-|-|- -| 0844 |[Backspace String Compare](src/main/java/g0801_0900/s0844_backspace_string_compare/Solution.java)| Easy | String, Two_Pointers, Stack, Simulation | 0 | 100.00 -| 0394 |[Decode String](src/main/java/g0301_0400/s0394_decode_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, LeetCode_75_Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 +| 1249 |[Minimum Remove to Make Valid Parentheses](src/main/java/g1201_1300/s1249_minimum_remove_to_make_valid_parentheses/Solution.java)| Medium | String, Stack | 13 | 94.62 +| 1823 |[Find the Winner of the Circular Game](src/main/java/g1801_1900/s1823_find_the_winner_of_the_circular_game/Solution.java)| Medium | Array, Math, Simulation, Recursion, Queue | 3 | 64.85 -#### Day 15 Heap +#### Day 15 Tree | | | | | | |-|-|-|-|-|- -| 1046 |[Last Stone Weight](src/main/java/g1001_1100/s1046_last_stone_weight/Solution.java)| Easy | Array, Heap_Priority_Queue | 2 | 73.81 -| 0692 |[Top K Frequent Words](src/main/java/g0601_0700/s0692_top_k_frequent_words/Solution.java)| Medium | String, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Trie, Bucket_Sort | 11 | 38.54 - -### Level 2 +| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 +| 0105 |[Construct Binary Tree from Preorder and Inorder Traversal](src/main/java/g0101_0200/s0105_construct_binary_tree_from_preorder_and_inorder_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer, Big_O_Time_O(N)_Space_O(N) | 1 | 96.33 +| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -#### Day 1 Implementation/Simulation +#### Day 16 Tree | | | | | | |-|-|-|-|-|- -| 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 -| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 -| 1706 |[Where Will the Ball Fall](src/main/java/g1701_1800/s1706_where_will_the_ball_fall/Solution.java)| Medium | Array, Dynamic_Programming, Depth_First_Search, Matrix, Simulation | 2 | 64.55 +| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 +| 0113 |[Path Sum II](src/main/java/g0101_0200/s0113_path_sum_ii/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Backtracking | 1 | 100.00 +| 0450 |[Delete Node in a BST](src/main/java/g0401_0500/s0450_delete_node_in_a_bst/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree, LeetCode_75_Binary_Search_Tree | 0 | 100.00 -#### Day 2 String +#### Day 17 Tree | | | | | | |-|-|-|-|-|- -| 0014 |[Longest Common Prefix](src/main/java/g0001_0100/s0014_longest_common_prefix/Solution.java)| Easy | Top_Interview_Questions, String, Big_O_Time_O(n\*m)_Space_O(m) | 0 | 100.00 -| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 +| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 -#### Day 3 Linked List +#### Day 18 Tree | | | | | | |-|-|-|-|-|- -| 0019 |[Remove Nth Node From End of List](src/main/java/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Two_Pointers, Linked_List, Big_O_Time_O(L)_Space_O(L) | 0 | 100.00 -| 0234 |[Palindrome Linked List](src/main/java/g0201_0300/s0234_palindrome_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Two_Pointers, Stack, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 4 | 84.46 +| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 +| 0297 |[Serialize and Deserialize Binary Tree](src/main/java/g0201_0300/s0297_serialize_and_deserialize_binary_tree/Codec.java)| Hard | String, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Design | 7 | 98.13 -#### Day 4 Linked List +#### Day 19 Graph | | | | | | |-|-|-|-|-|- -| 0328 |[Odd Even Linked List](src/main/java/g0301_0400/s0328_odd_even_linked_list/Solution.java)| Medium | Linked_List, LeetCode_75_LinkedList | 0 | 100.00 -| 0148 |[Sort List](src/main/java/g0101_0200/s0148_sort_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Sorting, Two_Pointers, Linked_List, Divide_and_Conquer, Merge_Sort, Big_O_Time_O(log(N))_Space_O(log(N)) | 9 | 93.90 +| 0997 |[Find the Town Judge](src/main/java/g0901_1000/s0997_find_the_town_judge/Solution.java)| Easy | Array, Hash_Table, Graph | 3 | 80.64 +| 1557 |[Minimum Number of Vertices to Reach All Nodes](src/main/java/g1501_1600/s1557_minimum_number_of_vertices_to_reach_all_nodes/Solution.java)| Medium | Graph | 8 | 99.94 +| 0841 |[Keys and Rooms](src/main/java/g0801_0900/s0841_keys_and_rooms/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 3 | 51.54 -#### Day 5 Greedy +#### Day 20 Heap Priority Queue | | | | | | |-|-|-|-|-|- -| 2131 |[Longest Palindrome by Concatenating Two Letter Words](src/main/java/g2101_2200/s2131_longest_palindrome_by_concatenating_two_letter_words/Solution.java)| Medium | Array, String, Hash_Table, Greedy, Counting | 73 | 76.60 -| 0621 |[Task Scheduler](src/main/java/g0601_0700/s0621_task_scheduler/Solution.java)| Medium | Array, Hash_Table, Sorting, Greedy, Heap_Priority_Queue, Counting | 3 | 84.32 +| 0215 |[Kth Largest Element in an Array](src/main/java/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, LeetCode_75_Heap/Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 5 | 70.82 +| 0347 |[Top K Frequent Elements](src/main/java/g0301_0400/s0347_top_k_frequent_elements/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Divide_and_Conquer, Quickselect, Bucket_Sort, Big_O_Time_O(n\*log(n))_Space_O(k) | 9 | 97.30 -#### Day 6 Tree +#### Day 21 Heap Priority Queue | | | | | | |-|-|-|-|-|- -| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0110 |[Balanced Binary Tree](src/main/java/g0101_0200/s0110_balanced_binary_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree | 1 | 98.82 - -#### Day 7 Tree +| 0451 |[Sort Characters By Frequency](src/main/java/g0401_0500/s0451_sort_characters_by_frequency/Solution.java)| Medium | String, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Bucket_Sort | 13 | 89.63 +| 0973 |[K Closest Points to Origin](src/main/java/g0901_1000/s0973_k_closest_points_to_origin/Solution.java)| Medium | Array, Math, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Geometry, Quickselect | 4 | 98.26 -| | | | | | -|-|-|-|-|-|- -| 0543 |[Diameter of Binary Tree](src/main/java/g0501_0600/s0543_diameter_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0437 |[Path Sum III](src/main/java/g0401_0500/s0437_path_sum_iii/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 2 | 100.00 +### Algorithm I -#### Day 8 Binary Search +#### Day 1 Binary Search | | | | | | |-|-|-|-|-|- -| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 -| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 +| 0278 |[First Bad Version](src/main/java/g0201_0300/s0278_first_bad_version/Solution.java)| Easy | Binary_Search, Interactive | 15 | 87.89 +| 0035 |[Search Insert Position](src/main/java/g0001_0100/s0035_search_insert_position/Solution.java)| Easy | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -#### Day 9 Binary Search Tree +#### Day 2 Two Pointers | | | | | | |-|-|-|-|-|- -| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 -| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 +| 0977 |[Squares of a Sorted Array](src/main/java/g0901_1000/s0977_squares_of_a_sorted_array/Solution.java)| Easy | Array, Sorting, Two_Pointers | 1 | 100.00 +| 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -#### Day 10 Graph/BFS/DFS +#### Day 3 Two Pointers | | | | | | |-|-|-|-|-|- -| 0994 |[Rotting Oranges](src/main/java/g0901_1000/s0994_rotting_oranges/Solution.java)| Medium | Top_100_Liked_Questions, Array, Breadth_First_Search, Matrix, LeetCode_75_Graphs/BFS | 3 | 74.27 -| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 5 | 92.62 +| 0283 |[Move Zeroes](src/main/java/g0201_0300/s0283_move_zeroes/Solution.java)| Easy | Top_100_Liked_Questions, Array, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 83.99 +| 0167 |[Two Sum II - Input Array Is Sorted](src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers | 2 | 92.62 -#### Day 11 Graph/BFS/DFS +#### Day 4 Two Pointers | | | | | | |-|-|-|-|-|- -| 0210 |[Course Schedule II](src/main/java/g0201_0300/s0210_course_schedule_ii/Solution.java)| Medium | Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort | 4 | 91.07 -| 0815 |[Bus Routes](src/main/java/g0801_0900/s0815_bus_routes/Solution.java)| Hard | Array, Hash_Table, Breadth_First_Search | 49 | 89.11 +| 0344 |[Reverse String](src/main/java/g0301_0400/s0344_reverse_string/Solution.java)| Easy | String, Two_Pointers, Recursion | 1 | 99.91 +| 0557 |[Reverse Words in a String III](src/main/java/g0501_0600/s0557_reverse_words_in_a_string_iii/Solution.java)| Easy | String, Two_Pointers | 4 | 97.75 -#### Day 12 Dynamic Programming +#### Day 5 Two Pointers | | | | | | |-|-|-|-|-|- -| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 +| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 +| 0019 |[Remove Nth Node From End of List](src/main/java/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Two_Pointers, Linked_List, Big_O_Time_O(L)_Space_O(L) | 0 | 100.00 -#### Day 13 Dynamic Programming +#### Day 6 Sliding Window | | | | | | |-|-|-|-|-|- -| 0416 |[Partition Equal Subset Sum](src/main/java/g0401_0500/s0416_partition_equal_subset_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Big_O_Time_O(n\*sums)_Space_O(n\*sums) | 5 | 99.88 -| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 92.74 +| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 +| 0567 |[Permutation in String](src/main/java/g0501_0600/s0567_permutation_in_string/Solution.java)| Medium | String, Hash_Table, Two_Pointers, Sliding_Window | 5 | 93.93 -#### Day 14 Sliding Window/Two Pointer +#### Day 7 Breadth First Search Depth First Search | | | | | | |-|-|-|-|-|- -| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 -| 0016 |[3Sum Closest](src/main/java/g0001_0100/s0016_3sum_closest/Solution.java)| Medium | Array, Sorting, Two_Pointers | 4 | 98.21 -| 0076 |[Minimum Window Substring](src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 2 | 99.83 +| 0733 |[Flood Fill](src/main/java/g0701_0800/s0733_flood_fill/Solution.java)| Easy | Array, Depth_First_Search, Breadth_First_Search, Matrix | 1 | 85.36 +| 0695 |[Max Area of Island](src/main/java/g0601_0700/s0695_max_area_of_island/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 3 | 76.79 -#### Day 15 Tree +#### Day 8 Breadth First Search Depth First Search | | | | | | |-|-|-|-|-|- -| 0100 |[Same Tree](src/main/java/g0001_0100/s0100_same_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -| 0101 |[Symmetric Tree](src/main/java/g0101_0200/s0101_symmetric_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 +| 0617 |[Merge Two Binary Trees](src/main/java/g0601_0700/s0617_merge_two_binary_trees/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 1 | 72.47 +| 0116 |[Populating Next Right Pointers in Each Node](src/main/java/g0101_0200/s0116_populating_next_right_pointers_in_each_node/Solution.java)| Medium | Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 0 | 100.00 -#### Day 16 Design +#### Day 9 Breadth First Search Depth First Search | | | | | | |-|-|-|-|-|- -| 0232 |[Implement Queue using Stacks](src/main/java/g0201_0300/s0232_implement_queue_using_stacks/MyQueue.java)| Easy | Stack, Design, Queue | 1 | 67.21 -| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 -| 0208 |[Implement Trie (Prefix Tree)](src/main/java/g0201_0300/s0208_implement_trie_prefix_tree/Trie.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, LeetCode_75_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 32 | 95.05 +| 0542 |[01 Matrix](src/main/java/g0501_0600/s0542_01_matrix/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search, Matrix | 7 | 95.83 +| 0994 |[Rotting Oranges](src/main/java/g0901_1000/s0994_rotting_oranges/Solution.java)| Medium | Top_100_Liked_Questions, Array, Breadth_First_Search, Matrix, LeetCode_75_Graphs/BFS | 3 | 74.27 -#### Day 17 Interval +#### Day 10 Recursion Backtracking | | | | | | |-|-|-|-|-|- -| 0057 |[Insert Interval](src/main/java/g0001_0100/s0057_insert_interval/Solution.java)| Medium | Array | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 +| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 +| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -#### Day 18 Stack +#### Day 11 Recursion Backtracking | | | | | | |-|-|-|-|-|- -| 0735 |[Asteroid Collision](src/main/java/g0701_0800/s0735_asteroid_collision/Solution.java)| Medium | Array, Stack, LeetCode_75_Stack | 2 | 99.59 -| 0227 |[Basic Calculator II](src/main/java/g0201_0300/s0227_basic_calculator_ii/Solution.java)| Medium | String, Math, Stack | 8 | 95.32 +| 0077 |[Combinations](src/main/java/g0001_0100/s0077_combinations/Solution.java)| Medium | Backtracking | 15 | 92.38 +| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 +| 0784 |[Letter Case Permutation](src/main/java/g0701_0800/s0784_letter_case_permutation/Solution.java)| Medium | String, Bit_Manipulation, Backtracking | 10 | 40.38 -#### Day 19 Union Find +#### Day 12 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0547 |[Number of Provinces](src/main/java/g0501_0600/s0547_number_of_provinces/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find, LeetCode_75_Graphs/DFS | 2 | 69.51 -| 0947 |[Most Stones Removed with Same Row or Column](src/main/java/g0901_1000/s0947_most_stones_removed_with_same_row_or_column/Solution.java)| Medium | Depth_First_Search, Graph, Union_Find | 7 | 98.83 +| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 -#### Day 20 Brute Force/Backtracking +#### Day 13 Bit Manipulation | | | | | | |-|-|-|-|-|- -| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 -| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 - -### Udemy +| 0231 |[Power of Two](src/main/java/g0201_0300/s0231_power_of_two/Solution.java)| Easy | Math, Bit_Manipulation, Recursion | 1 | 100.00 +| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 -#### Udemy Integers +#### Day 14 Bit Manipulation | | | | | | |-|-|-|-|-|- -| 0412 |[Fizz Buzz](src/main/java/g0401_0500/s0412_fizz_buzz/Solution.java)| Easy | String, Math, Simulation | 1 | 100.00 +| 0190 |[Reverse Bits](src/main/java/g0101_0200/s0190_reverse_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer | 0 | 100.00 | 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 -| 0007 |[Reverse Integer](src/main/java/g0001_0100/s0007_reverse_integer/Solution.java)| Medium | Top_Interview_Questions, Math, Big_O_Time_O(log10(x))_Space_O(1) | 0 | 100.00 -| 0009 |[Palindrome Number](src/main/java/g0001_0100/s0009_palindrome_number/Solution.java)| Easy | Math, Big_O_Time_O(log10(x))_Space_O(1) | 4 | 100.00 -| 0172 |[Factorial Trailing Zeroes](src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java)| Medium | Top_Interview_Questions, Math | 0 | 100.00 -| 0050 |[Pow(x, n)](src/main/java/g0001_0100/s0050_powx_n/Solution.java)| Medium | Top_Interview_Questions, Math, Recursion | 0 | 100.00 -#### Udemy Strings +### Algorithm II + +#### Day 1 Binary Search | | | | | | |-|-|-|-|-|- -| 0344 |[Reverse String](src/main/java/g0301_0400/s0344_reverse_string/Solution.java)| Easy | String, Two_Pointers, Recursion | 1 | 99.91 -| 0014 |[Longest Common Prefix](src/main/java/g0001_0100/s0014_longest_common_prefix/Solution.java)| Easy | Top_Interview_Questions, String, Big_O_Time_O(n\*m)_Space_O(m) | 0 | 100.00 -| 0187 |[Repeated DNA Sequences](src/main/java/g0101_0200/s0187_repeated_dna_sequences/Solution.java)| Medium | String, Hash_Table, Bit_Manipulation, Sliding_Window, Hash_Function, Rolling_Hash | 29 | 77.11 -| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 -| 0020 |[Valid Parentheses](src/main/java/g0001_0100/s0020_valid_parentheses/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 2 | 97.19 -| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 -| 0394 |[Decode String](src/main/java/g0301_0400/s0394_decode_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, LeetCode_75_Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 -| 0151 |[Reverse Words in a String](src/main/java/g0101_0200/s0151_reverse_words_in_a_string/Solution.java)| Medium | String, Two_Pointers, LeetCode_75_Array/String | 2 | 99.69 -| 0273 |[Integer to English Words](src/main/java/g0201_0300/s0273_integer_to_english_words/Solution.java)| Hard | String, Math, Recursion | 3 | 95.67 +| 0034 |[Find First and Last Position of Element in Sorted Array](src/main/java/g0001_0100/s0034_find_first_and_last_position_of_element_in_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 -#### Udemy Binary Search +#### Day 2 Binary Search | | | | | | |-|-|-|-|-|- -| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 -| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 | 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 +| 0162 |[Find Peak Element](src/main/java/g0101_0200/s0162_find_peak_element/Solution.java)| Medium | Top_Interview_Questions, Array, Binary_Search, LeetCode_75_Binary_Search | 0 | 100.00 -#### Udemy Arrays +#### Day 3 Two Pointers | | | | | | |-|-|-|-|-|- -| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 -| 0283 |[Move Zeroes](src/main/java/g0201_0300/s0283_move_zeroes/Solution.java)| Easy | Top_100_Liked_Questions, Array, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 83.99 -| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 -| 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 -| 0058 |[Length of Last Word](src/main/java/g0001_0100/s0058_length_of_last_word/Solution.java)| Easy | String | 0 | 100.00 -| 0605 |[Can Place Flowers](src/main/java/g0601_0700/s0605_can_place_flowers/Solution.java)| Easy | Array, Greedy, LeetCode_75_Array/String | 1 | 96.77 -| 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 76.91 -| 0080 |[Remove Duplicates from Sorted Array II](src/main/java/g0001_0100/s0080_remove_duplicates_from_sorted_array_ii/Solution.java)| Medium | Array, Two_Pointers | 0 | 100.00 -| 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 -| 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 -| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 -| 1291 |[Sequential Digits](src/main/java/g1201_1300/s1291_sequential_digits/Solution.java)| Medium | Enumeration | 0 | 100.00 -| 0448 |[Find All Numbers Disappeared in an Array](src/main/java/g0401_0500/s0448_find_all_numbers_disappeared_in_an_array/Solution.java)| Easy | Array, Hash_Table | 3 | 100.00 -| 0442 |[Find All Duplicates in an Array](src/main/java/g0401_0500/s0442_find_all_duplicates_in_an_array/Solution.java)| Medium | Array, Hash_Table | 5 | 98.83 -| 0041 |[First Missing Positive](src/main/java/g0001_0100/s0041_first_missing_positive/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n) | 1 | 100.00 -| 0697 |[Degree of an Array](src/main/java/g0601_0700/s0697_degree_of_an_array/Solution.java)| Easy | Array, Hash_Table | 14 | 93.19 -| 0532 |[K-diff Pairs in an Array](src/main/java/g0501_0600/s0532_k_diff_pairs_in_an_array/Solution.java)| Medium | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 13 | 58.23 -| 0713 |[Subarray Product Less Than K](src/main/java/g0701_0800/s0713_subarray_product_less_than_k/Solution.java)| Medium | Array, Sliding_Window | 8 | 39.00 -| 1007 |[Minimum Domino Rotations For Equal Row](src/main/java/g1001_1100/s1007_minimum_domino_rotations_for_equal_row/Solution.java)| Medium | Array, Greedy | 5 | 79.64 -| 1306 |[Jump Game III](src/main/java/g1301_1400/s1306_jump_game_iii/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search | 2 | 96.23 -| 0456 |[132 Pattern](src/main/java/g0401_0500/s0456_132_pattern/Solution.java)| Medium | Array, Binary_Search, Stack, Ordered_Set, Monotonic_Stack | 16 | 82.41 -| 0239 |[Sliding Window Maximum](src/main/java/g0201_0300/s0239_sliding_window_maximum/Solution.java)| Hard | Top_100_Liked_Questions, Array, Heap_Priority_Queue, Sliding_Window, Queue, Monotonic_Queue, Big_O_Time_O(n\*k)_Space_O(n+k) | 26 | 95.89 +| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 -#### Udemy Two Pointers +#### Day 4 Two Pointers | | | | | | |-|-|-|-|-|- -| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 -| 0125 |[Valid Palindrome](src/main/java/g0101_0200/s0125_valid_palindrome/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers | 2 | 99.11 -| 0977 |[Squares of a Sorted Array](src/main/java/g0901_1000/s0977_squares_of_a_sorted_array/Solution.java)| Easy | Array, Sorting, Two_Pointers | 1 | 100.00 -| 0026 |[Remove Duplicates from Sorted Array](src/main/java/g0001_0100/s0026_remove_duplicates_from_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Two_Pointers | 0 | 100.00 -| 0042 |[Trapping Rain Water](src/main/java/g0001_0100/s0042_trapping_rain_water/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Two_Pointers, Stack, Monotonic_Stack, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 +| 0844 |[Backspace String Compare](src/main/java/g0801_0900/s0844_backspace_string_compare/Solution.java)| Easy | String, Two_Pointers, Stack, Simulation | 0 | 100.00 +| 0986 |[Interval List Intersections](src/main/java/g0901_1000/s0986_interval_list_intersections/Solution.java)| Medium | Array, Two_Pointers | 2 | 99.95 +| 0011 |[Container With Most Water](src/main/java/g0001_0100/s0011_container_with_most_water/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Greedy, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 3 | 96.01 -#### Udemy Famous Algorithm +#### Day 5 Sliding Window | | | | | | |-|-|-|-|-|- -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 -| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 +| 0438 |[Find All Anagrams in a String](src/main/java/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 3 | 99.83 +| 0713 |[Subarray Product Less Than K](src/main/java/g0701_0800/s0713_subarray_product_less_than_k/Solution.java)| Medium | Array, Sliding_Window | 8 | 39.00 +| 0209 |[Minimum Size Subarray Sum](src/main/java/g0201_0300/s0209_minimum_size_subarray_sum/Solution.java)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 1 | 99.76 -#### Udemy Sorting Algorithms +#### Day 6 Breadth First Search Depth First Search | | | | | | |-|-|-|-|-|- -| 0912 |[Sort an Array](src/main/java/g0901_1000/s0912_sort_an_array/Solution.java)| Medium | Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Merge_Sort, Bucket_Sort, Counting_Sort, Radix_Sort | 25 | 38.15 +| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 +| 0547 |[Number of Provinces](src/main/java/g0501_0600/s0547_number_of_provinces/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find, LeetCode_75_Graphs/DFS | 2 | 69.51 -#### Udemy 2D Arrays/Matrix +#### Day 7 Breadth First Search Depth First Search | | | | | | |-|-|-|-|-|- -| 0304 |[Range Sum Query 2D - Immutable](src/main/java/g0301_0400/s0304_range_sum_query_2d_immutable/NumMatrix.java)| Medium | Array, Matrix, Design, Prefix_Sum | 153 | 87.51 -| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 -| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 -| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 -| 1572 |[Matrix Diagonal Sum](src/main/java/g1501_1600/s1572_matrix_diagonal_sum/Solution.java)| Easy | Array, Matrix | 0 | 100.00 -| 0073 |[Set Matrix Zeroes](src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Matrix, Big_O_Time_O(m\*n)_Space_O(1) | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 +| 0117 |[Populating Next Right Pointers in Each Node II](src/main/java/g0101_0200/s0117_populating_next_right_pointers_in_each_node_ii/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 0 | 100.00 +| 0572 |[Subtree of Another Tree](src/main/java/g0501_0600/s0572_subtree_of_another_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Hash_Function, String_Matching | 2 | 97.06 -#### Udemy Linked List +#### Day 8 Breadth First Search Depth First Search | | | | | | |-|-|-|-|-|- -| 0114 |[Flatten Binary Tree to Linked List](src/main/java/g0101_0200/s0114_flatten_binary_tree_to_linked_list/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -| 0445 |[Add Two Numbers II](src/main/java/g0401_0500/s0445_add_two_numbers_ii/Solution.java)| Medium | Math, Stack, Linked_List | 3 | 90.38 -| 0328 |[Odd Even Linked List](src/main/java/g0301_0400/s0328_odd_even_linked_list/Solution.java)| Medium | Linked_List, LeetCode_75_LinkedList | 0 | 100.00 -| 0061 |[Rotate List](src/main/java/g0001_0100/s0061_rotate_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 -| 0024 |[Swap Nodes in Pairs](src/main/java/g0001_0100/s0024_swap_nodes_in_pairs/Solution.java)| Medium | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 -| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -| 0141 |[Linked List Cycle](src/main/java/g0101_0200/s0141_linked_list_cycle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 -| 0160 |[Intersection of Two Linked Lists](src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(M+N)_Space_O(1) | 1 | 99.92 -| 0234 |[Palindrome Linked List](src/main/java/g0201_0300/s0234_palindrome_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Two_Pointers, Stack, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 4 | 84.46 -| 0138 |[Copy List with Random Pointer](src/main/java/g0101_0200/s0138_copy_list_with_random_pointer/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 -| 0146 |[LRU Cache](src/main/java/g0101_0200/s0146_lru_cache/LRUCache.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Design, Linked_List, Doubly_Linked_List, Big_O_Time_O(1)_Space_O(capacity) | 40 | 98.20 -| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 +| 1091 |[Shortest Path in Binary Matrix](src/main/java/g1001_1100/s1091_shortest_path_in_binary_matrix/Solution.java)| Medium | Array, Breadth_First_Search, Matrix | 22 | 69.99 +| 0130 |[Surrounded Regions](src/main/java/g0101_0200/s0130_surrounded_regions/Solution.java)| Medium | Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 2 | 84.66 +| 0797 |[All Paths From Source to Target](src/main/java/g0701_0800/s0797_all_paths_from_source_to_target/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Backtracking | 2 | 90.53 -#### Udemy Tree Stack Queue +#### Day 9 Recursion Backtracking | | | | | | |-|-|-|-|-|- -| 0144 |[Binary Tree Preorder Traversal](src/main/java/g0101_0200/s0144_binary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 48.38 -| 0094 |[Binary Tree Inorder Traversal](src/main/java/g0001_0100/s0094_binary_tree_inorder_traversal/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0145 |[Binary Tree Postorder Traversal](src/main/java/g0101_0200/s0145_binary_tree_postorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 49.11 -| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 -| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 -| 1008 |[Construct Binary Search Tree from Preorder Traversal](src/main/java/g1001_1100/s1008_construct_binary_search_tree_from_preorder_traversal/Solution.java)| Medium | Array, Tree, Binary_Tree, Stack, Monotonic_Stack, Binary_Search_Tree | 0 | 100.00 -| 0543 |[Diameter of Binary Tree](src/main/java/g0501_0600/s0543_diameter_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0938 |[Range Sum of BST](src/main/java/g0901_1000/s0938_range_sum_of_bst/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 -| 0100 |[Same Tree](src/main/java/g0001_0100/s0100_same_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0111 |[Minimum Depth of Binary Tree](src/main/java/g0101_0200/s0111_minimum_depth_of_binary_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 1 | 97.49 -| 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 -| 0110 |[Balanced Binary Tree](src/main/java/g0101_0200/s0110_balanced_binary_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree | 1 | 98.82 -| 0701 |[Insert into a Binary Search Tree](src/main/java/g0701_0800/s0701_insert_into_a_binary_search_tree/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 -| 0297 |[Serialize and Deserialize Binary Tree](src/main/java/g0201_0300/s0297_serialize_and_deserialize_binary_tree/Codec.java)| Hard | String, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Design | 7 | 98.13 -| 0124 |[Binary Tree Maximum Path Sum](src/main/java/g0101_0200/s0124_binary_tree_maximum_path_sum/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -| 0337 |[House Robber III](src/main/java/g0301_0400/s0337_house_robber_iii/Solution.java)| Medium | Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree | 1 | 91.77 -| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 -| 0968 |[Binary Tree Cameras](src/main/java/g0901_1000/s0968_binary_tree_cameras/Solution.java)| Hard | Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 0 | 100.00 +| 0090 |[Subsets II](src/main/java/g0001_0100/s0090_subsets_ii/Solution.java)| Medium | Array, Bit_Manipulation, Backtracking | 2 | 82.94 -#### Udemy Trie and Heap +#### Day 10 Recursion Backtracking | | | | | | |-|-|-|-|-|- -| 0208 |[Implement Trie (Prefix Tree)](src/main/java/g0201_0300/s0208_implement_trie_prefix_tree/Trie.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, LeetCode_75_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 32 | 95.05 -| 0745 |[Prefix and Suffix Search](src/main/java/g0701_0800/s0745_prefix_and_suffix_search/WordFilter.java)| Hard | String, Design, Trie | 366 | 76.15 +| 0047 |[Permutations II](src/main/java/g0001_0100/s0047_permutations_ii/Solution.java)| Medium | Array, Backtracking | 1 | 99.86 +| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 +| 0040 |[Combination Sum II](src/main/java/g0001_0100/s0040_combination_sum_ii/Solution.java)| Medium | Array, Backtracking | 2 | 99.75 -#### Udemy Graph +#### Day 11 Recursion Backtracking | | | | | | |-|-|-|-|-|- -| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 -| 0133 |[Clone Graph](src/main/java/g0101_0200/s0133_clone_graph/Solution.java)| Medium | Hash_Table, Depth_First_Search, Breadth_First_Search, Graph | 25 | 68.87 -| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 5 | 92.62 +| 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, LeetCode_75_Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 +| 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 +| 0079 |[Word Search](src/main/java/g0001_0100/s0079_word_search/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Backtracking, Big_O_Time_O(4^(m\*n))_Space_O(m\*n) | 64 | 98.51 -#### Udemy Dynamic Programming +#### Day 12 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 -| 0118 |[Pascal's Triangle](src/main/java/g0101_0200/s0118_pascals_triangle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 1 | 67.08 -| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 -| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 -| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 92.74 -| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 | 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -| 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 -| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 -| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 -| 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n\*m)_Space_O(n\*m) | 19 | 89.05 -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 -| 0044 |[Wildcard Matching](src/main/java/g0001_0100/s0044_wildcard_matching/Solution.java)| Hard | Top_Interview_Questions, String, Dynamic_Programming, Greedy, Recursion | 2 | 99.87 -| 0010 |[Regular Expression Matching](src/main/java/g0001_0100/s0010_regular_expression_matching/Solution.java)| Hard | Top_Interview_Questions, String, Dynamic_Programming, Recursion, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 100.00 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 -#### Udemy Backtracking/Recursion +#### Day 13 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 -| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 -| 0216 |[Combination Sum III](src/main/java/g0201_0300/s0216_combination_sum_iii/Solution.java)| Medium | Array, Backtracking, LeetCode_75_Backtracking | 1 | 81.35 -| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 0 | 100.00 -| 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, LeetCode_75_Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 -| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 +| 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0062 |[Unique Paths](src/main/java/g0001_0100/s0062_unique_paths/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Combinatorics, LeetCode_75_DP/Multidimensional, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 -#### Udemy Bit Manipulation +#### Day 14 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 -| 0389 |[Find the Difference](src/main/java/g0301_0400/s0389_find_the_difference/Solution.java)| Easy | String, Hash_Table, Sorting, Bit_Manipulation | 1 | 100.00 -| 0190 |[Reverse Bits](src/main/java/g0101_0200/s0190_reverse_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer | 0 | 100.00 -| 0461 |[Hamming Distance](src/main/java/g0401_0500/s0461_hamming_distance/Solution.java)| Easy | Bit_Manipulation | 0 | 100.00 -| 1009 |[Complement of Base 10 Integer](src/main/java/g1001_1100/s1009_complement_of_base_10_integer/Solution.java)| Easy | Bit_Manipulation | 1 | 41.56 -| 0338 |[Counting Bits](src/main/java/g0301_0400/s0338_counting_bits/Solution.java)| Easy | Dynamic_Programming, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(num)_Space_O(num) | 2 | 96.37 -| 0371 |[Sum of Two Integers](src/main/java/g0301_0400/s0371_sum_of_two_integers/Solution.java)| Medium | Math, Bit_Manipulation | 0 | 100.00 -| 0029 |[Divide Two Integers](src/main/java/g0001_0100/s0029_divide_two_integers/Solution.java)| Medium | Top_Interview_Questions, Math, Bit_Manipulation | 1 | 97.44 +| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 +| 0413 |[Arithmetic Slices](src/main/java/g0401_0500/s0413_arithmetic_slices/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -#### Udemy Design +#### Day 15 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 +| 0091 |[Decode Ways](src/main/java/g0001_0100/s0091_decode_ways/Solution.java)| Medium | Top_Interview_Questions, String, Dynamic_Programming | 2 | 66.37 +| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 -### Top Interview 150 +#### Day 16 Dynamic Programming -#### Top Interview 150 Array/String +| | | | | | +|-|-|-|-|-|- +| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 +| 0673 |[Number of Longest Increasing Subsequence](src/main/java/g0601_0700/s0673_number_of_longest_increasing_subsequence/Solution.java)| Medium | Array, Dynamic_Programming, Segment_Tree, Binary_Indexed_Tree | 25 | 68.75 + +#### Day 17 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0088 |[Merge Sorted Array](src/main/java/g0001_0100/s0088_merge_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Sorting, Two_Pointers | 0 | 100.00 -| 0027 |[Remove Element](src/main/java/g0001_0100/s0027_remove_element/Solution.java)| Easy | Array, Two_Pointers | 0 | 100.00 -| 0026 |[Remove Duplicates from Sorted Array](src/main/java/g0001_0100/s0026_remove_duplicates_from_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Two_Pointers | 0 | 100.00 -| 0080 |[Remove Duplicates from Sorted Array II](src/main/java/g0001_0100/s0080_remove_duplicates_from_sorted_array_ii/Solution.java)| Medium | Array, Two_Pointers | 0 | 100.00 -| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 -| 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 -| 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 76.91 -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 -| 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0274 |[H-Index](src/main/java/g0201_0300/s0274_h_index/Solution.java)| Medium | Array, Sorting, Counting_Sort | 0 | 100.00 -| 0380 |[Insert Delete GetRandom O(1)](src/main/java/g0301_0400/s0380_insert_delete_getrandom_o1/RandomizedSet.java)| Medium | Array, Hash_Table, Math, Design, Randomized | 27 | 93.44 -| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 -| 0134 |[Gas Station](src/main/java/g0101_0200/s0134_gas_station/Solution.java)| Medium | Top_Interview_Questions, Array, Greedy | 2 | 97.52 -| 0135 |[Candy](src/main/java/g0101_0200/s0135_candy/Solution.java)| Hard | Array, Greedy | 3 | 83.95 -| 0042 |[Trapping Rain Water](src/main/java/g0001_0100/s0042_trapping_rain_water/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Two_Pointers, Stack, Monotonic_Stack, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0013 |[Roman to Integer](src/main/java/g0001_0100/s0013_roman_to_integer/Solution.java)| Easy | Top_Interview_Questions, String, Hash_Table, Math, Big_O_Time_O(n)_Space_O(1) | 2 | 100.00 -| 0012 |[Integer to Roman](src/main/java/g0001_0100/s0012_integer_to_roman/Solution.java)| Medium | String, Hash_Table, Math, Big_O_Time_O(1)_Space_O(1) | 2 | 100.00 -| 0058 |[Length of Last Word](src/main/java/g0001_0100/s0058_length_of_last_word/Solution.java)| Easy | String | 0 | 100.00 -| 0014 |[Longest Common Prefix](src/main/java/g0001_0100/s0014_longest_common_prefix/Solution.java)| Easy | Top_Interview_Questions, String, Big_O_Time_O(n\*m)_Space_O(m) | 0 | 100.00 -| 0151 |[Reverse Words in a String](src/main/java/g0101_0200/s0151_reverse_words_in_a_string/Solution.java)| Medium | String, Two_Pointers, LeetCode_75_Array/String | 2 | 99.69 -| 0006 |[Zigzag Conversion](src/main/java/g0001_0100/s0006_zigzag_conversion/Solution.java)| Medium | String, Big_O_Time_O(n)_Space_O(n) | 2 | 99.71 -| 0028 |[Find the Index of the First Occurrence in a String](src/main/java/g0001_0100/s0028_find_the_index_of_the_first_occurrence_in_a_string/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers, String_Matching | 0 | 100.00 -| 0068 |[Text Justification](src/main/java/g0001_0100/s0068_text_justification/Solution.java)| Hard | Array, String, Simulation | 0 | 100.00 +| 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n\*m)_Space_O(n\*m) | 19 | 89.05 +| 0583 |[Delete Operation for Two Strings](src/main/java/g0501_0600/s0583_delete_operation_for_two_strings/Solution.java)| Medium | String, Dynamic_Programming | 12 | 79.10 -#### Top Interview 150 Two Pointers +#### Day 18 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0125 |[Valid Palindrome](src/main/java/g0101_0200/s0125_valid_palindrome/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers | 2 | 99.11 -| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 -| 0167 |[Two Sum II - Input Array Is Sorted](src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers | 2 | 92.62 -| 0011 |[Container With Most Water](src/main/java/g0001_0100/s0011_container_with_most_water/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Greedy, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 3 | 96.01 -| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 +| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 +| 0343 |[Integer Break](src/main/java/g0301_0400/s0343_integer_break/Solution.java)| Medium | Dynamic_Programming, Math | 0 | 100.00 -#### Top Interview 150 Sliding Window +#### Day 19 Bit Manipulation | | | | | | |-|-|-|-|-|- -| 0209 |[Minimum Size Subarray Sum](src/main/java/g0201_0300/s0209_minimum_size_subarray_sum/Solution.java)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 1 | 99.76 -| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 -| 0030 |[Substring with Concatenation of All Words](src/main/java/g0001_0100/s0030_substring_with_concatenation_of_all_words/Solution.java)| Hard | String, Hash_Table, Sliding_Window | 11 | 97.43 -| 0076 |[Minimum Window Substring](src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 2 | 99.83 +| 0201 |[Bitwise AND of Numbers Range](src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java)| Medium | Bit_Manipulation | 3 | 100.00 -#### Top Interview 150 Matrix +#### Day 20 Others | | | | | | |-|-|-|-|-|- -| 0036 |[Valid Sudoku](src/main/java/g0001_0100/s0036_valid_sudoku/Solution.java)| Medium | Top_Interview_Questions, Array, Hash_Table, Matrix | 1 | 100.00 -| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 -| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 -| 0073 |[Set Matrix Zeroes](src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Matrix, Big_O_Time_O(m\*n)_Space_O(1) | 0 | 100.00 -| 0289 |[Game of Life](src/main/java/g0201_0300/s0289_game_of_life/Solution.java)| Medium | Array, Matrix, Simulation | 0 | 100.00 +| 0384 |[Shuffle an Array](src/main/java/g0301_0400/s0384_shuffle_an_array/Solution.java)| Medium | Array, Math, Randomized | 52 | 91.77 -#### Top Interview 150 Hashmap +#### Day 21 Others | | | | | | |-|-|-|-|-|- -| 0383 |[Ransom Note](src/main/java/g0301_0400/s0383_ransom_note/Solution.java)| Easy | String, Hash_Table, Counting | 1 | 99.10 -| 0205 |[Isomorphic Strings](src/main/java/g0201_0300/s0205_isomorphic_strings/Solution.java)| Easy | String, Hash_Table | 2 | 99.18 -| 0290 |[Word Pattern](src/main/java/g0201_0300/s0290_word_pattern/Solution.java)| Easy | String, Hash_Table | 0 | 100.00 -| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 -| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 | 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 -| 0219 |[Contains Duplicate II](src/main/java/g0201_0300/s0219_contains_duplicate_ii/Solution.java)| Easy | Array, Hash_Table, Sliding_Window | 15 | 98.00 -| 0128 |[Longest Consecutive Sequence](src/main/java/g0101_0200/s0128_longest_consecutive_sequence/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Union_Find, Big_O_Time_O(N_log_N)_Space_O(1) | 14 | 98.89 +| 0149 |[Max Points on a Line](src/main/java/g0101_0200/s0149_max_points_on_a_line/Solution.java)| Hard | Top_Interview_Questions, Array, Hash_Table, Math, Geometry | 7 | 99.18 -#### Top Interview 150 Intervals +### Binary Search I + +#### Day 1 | | | | | | |-|-|-|-|-|- -| 0228 |[Summary Ranges](src/main/java/g0201_0300/s0228_summary_ranges/Solution.java)| Easy | Array | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 -| 0057 |[Insert Interval](src/main/java/g0001_0100/s0057_insert_interval/Solution.java)| Medium | Array | 0 | 100.00 -| 0452 |[Minimum Number of Arrows to Burst Balloons](src/main/java/g0401_0500/s0452_minimum_number_of_arrows_to_burst_balloons/Solution.java)| Medium | Array, Sorting, Greedy, LeetCode_75_Intervals | 52 | 89.91 +| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 +| 0374 |[Guess Number Higher or Lower](src/main/java/g0301_0400/s0374_guess_number_higher_or_lower/Solution.java)| Easy | Binary_Search, Interactive, LeetCode_75_Binary_Search | 0 | 100.00 -#### Top Interview 150 Stack +#### Day 2 | | | | | | |-|-|-|-|-|- -| 0020 |[Valid Parentheses](src/main/java/g0001_0100/s0020_valid_parentheses/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 2 | 97.19 -| 0071 |[Simplify Path](src/main/java/g0001_0100/s0071_simplify_path/Solution.java)| Medium | String, Stack | 2 | 99.86 -| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 -| 0150 |[Evaluate Reverse Polish Notation](src/main/java/g0101_0200/s0150_evaluate_reverse_polish_notation/Solution.java)| Medium | Top_Interview_Questions, Array, Math, Stack | 6 | 76.50 -| 0224 |[Basic Calculator](src/main/java/g0201_0300/s0224_basic_calculator/Solution.java)| Hard | String, Math, Stack, Recursion | 2 | 96.52 +| 0035 |[Search Insert Position](src/main/java/g0001_0100/s0035_search_insert_position/Solution.java)| Easy | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0852 |[Peak Index in a Mountain Array](src/main/java/g0801_0900/s0852_peak_index_in_a_mountain_array/Solution.java)| Medium | Array, Binary_Search | 0 | 100.00 -#### Top Interview 150 Linked List +#### Day 3 | | | | | | |-|-|-|-|-|- -| 0141 |[Linked List Cycle](src/main/java/g0101_0200/s0141_linked_list_cycle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -| 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 -| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 -| 0138 |[Copy List with Random Pointer](src/main/java/g0101_0200/s0138_copy_list_with_random_pointer/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -| 0092 |[Reverse Linked List II](src/main/java/g0001_0100/s0092_reverse_linked_list_ii/Solution.java)| Medium | Linked_List | 0 | 100.00 -| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 -| 0019 |[Remove Nth Node From End of List](src/main/java/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Two_Pointers, Linked_List, Big_O_Time_O(L)_Space_O(L) | 0 | 100.00 -| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 -| 0061 |[Rotate List](src/main/java/g0001_0100/s0061_rotate_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 -| 0086 |[Partition List](src/main/java/g0001_0100/s0086_partition_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 -| 0146 |[LRU Cache](src/main/java/g0101_0200/s0146_lru_cache/LRUCache.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Design, Linked_List, Doubly_Linked_List, Big_O_Time_O(1)_Space_O(capacity) | 40 | 98.20 +| 0367 |[Valid Perfect Square](src/main/java/g0301_0400/s0367_valid_perfect_square/Solution.java)| Easy | Math, Binary_Search | 0 | 100.00 +| 1385 |[Find the Distance Value Between Two Arrays](src/main/java/g1301_1400/s1385_find_the_distance_value_between_two_arrays/Solution.java)| Easy | Array, Sorting, Binary_Search, Two_Pointers | 5 | 65.78 -#### Top Interview 150 Binary Tree General +#### Day 4 | | | | | | |-|-|-|-|-|- -| 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 -| 0100 |[Same Tree](src/main/java/g0001_0100/s0100_same_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0101 |[Symmetric Tree](src/main/java/g0101_0200/s0101_symmetric_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -| 0105 |[Construct Binary Tree from Preorder and Inorder Traversal](src/main/java/g0101_0200/s0105_construct_binary_tree_from_preorder_and_inorder_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer, Big_O_Time_O(N)_Space_O(N) | 1 | 96.33 -| 0106 |[Construct Binary Tree from Inorder and Postorder Traversal](src/main/java/g0101_0200/s0106_construct_binary_tree_from_inorder_and_postorder_traversal/Solution.java)| Medium | Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer | 0 | 100.00 -| 0117 |[Populating Next Right Pointers in Each Node II](src/main/java/g0101_0200/s0117_populating_next_right_pointers_in_each_node_ii/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 0 | 100.00 -| 0114 |[Flatten Binary Tree to Linked List](src/main/java/g0101_0200/s0114_flatten_binary_tree_to_linked_list/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -| 0112 |[Path Sum](src/main/java/g0101_0200/s0112_path_sum/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -| 0129 |[Sum Root to Leaf Numbers](src/main/java/g0101_0200/s0129_sum_root_to_leaf_numbers/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree | 0 | 100.00 -| 0124 |[Binary Tree Maximum Path Sum](src/main/java/g0101_0200/s0124_binary_tree_maximum_path_sum/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 -| 0222 |[Count Complete Tree Nodes](src/main/java/g0201_0300/s0222_count_complete_tree_nodes/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Search, Binary_Tree | 0 | 100.00 -| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 +| 0069 |[Sqrt(x)](src/main/java/g0001_0100/s0069_sqrtx/Solution.java)| Easy | Top_Interview_Questions, Math, Binary_Search | 1 | 86.67 +| 0744 |[Find Smallest Letter Greater Than Target](src/main/java/g0701_0800/s0744_find_smallest_letter_greater_than_target/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 -#### Top Interview 150 Binary Tree BFS +#### Day 5 + +| | | | | | +|-|-|-|-|-|- +| 0278 |[First Bad Version](src/main/java/g0201_0300/s0278_first_bad_version/Solution.java)| Easy | Binary_Search, Interactive | 15 | 87.89 +| 0034 |[Find First and Last Position of Element in Sorted Array](src/main/java/g0001_0100/s0034_find_first_and_last_position_of_element_in_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 + +#### Day 6 | | | | | | |-|-|-|-|-|- -| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 -| 0637 |[Average of Levels in Binary Tree](src/main/java/g0601_0700/s0637_average_of_levels_in_binary_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 2 | 94.34 -| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 -| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0441 |[Arranging Coins](src/main/java/g0401_0500/s0441_arranging_coins/Solution.java)| Easy | Math, Binary_Search | 2 | 95.97 +| 1539 |[Kth Missing Positive Number](src/main/java/g1501_1600/s1539_kth_missing_positive_number/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 -#### Top Interview 150 Binary Search Tree +#### Day 7 | | | | | | |-|-|-|-|-|- -| 0530 |[Minimum Absolute Difference in BST](src/main/java/g0501_0600/s0530_minimum_absolute_difference_in_bst/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 -| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 0167 |[Two Sum II - Input Array Is Sorted](src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers | 2 | 92.62 +| 1608 |[Special Array With X Elements Greater Than or Equal X](src/main/java/g1601_1700/s1608_special_array_with_x_elements_greater_than_or_equal_x/Solution.java)| Easy | Array, Sorting, Binary_Search | 2 | 61.14 -#### Top Interview 150 Graph General +#### Day 8 | | | | | | |-|-|-|-|-|- -| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 -| 0130 |[Surrounded Regions](src/main/java/g0101_0200/s0130_surrounded_regions/Solution.java)| Medium | Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 2 | 84.66 -| 0133 |[Clone Graph](src/main/java/g0101_0200/s0133_clone_graph/Solution.java)| Medium | Hash_Table, Depth_First_Search, Breadth_First_Search, Graph | 25 | 68.87 -| 0399 |[Evaluate Division](src/main/java/g0301_0400/s0399_evaluate_division/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Graph, Union_Find, Shortest_Path, LeetCode_75_Graphs/DFS | 1 | 99.52 -| 0207 |[Course Schedule](src/main/java/g0201_0300/s0207_course_schedule/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort, Big_O_Time_O(N)_Space_O(N) | 3 | 99.99 -| 0210 |[Course Schedule II](src/main/java/g0201_0300/s0210_course_schedule_ii/Solution.java)| Medium | Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort | 4 | 91.07 +| 1351 |[Count Negative Numbers in a Sorted Matrix](src/main/java/g1301_1400/s1351_count_negative_numbers_in_a_sorted_matrix/Solution.java)| Easy | Array, Binary_Search, Matrix | 1 | 49.66 +| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 -#### Top Interview 150 Graph BFS +#### Day 9 | | | | | | |-|-|-|-|-|- -| 0909 |[Snakes and Ladders](src/main/java/g0901_1000/s0909_snakes_and_ladders/Solution.java)| Medium | Array, Breadth_First_Search, Matrix | 4 | 95.81 -| 0433 |[Minimum Genetic Mutation](src/main/java/g0401_0500/s0433_minimum_genetic_mutation/Solution.java)| Medium | String, Hash_Table, Breadth_First_Search | 0 | 100.00 -| 0127 |[Word Ladder](src/main/java/g0101_0200/s0127_word_ladder/Solution.java)| Hard | Top_Interview_Questions, String, Hash_Table, Breadth_First_Search | 22 | 96.00 +| 1337 |[The K Weakest Rows in a Matrix](src/main/java/g1301_1400/s1337_the_k_weakest_rows_in_a_matrix/Solution.java)| Easy | Array, Sorting, Binary_Search, Matrix, Heap_Priority_Queue | 1 | 99.77 +| 1346 |[Check If N and Its Double Exist](src/main/java/g1301_1400/s1346_check_if_n_and_its_double_exist/Solution.java)| Easy | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 1 | 99.64 -#### Top Interview 150 Trie +#### Day 10 | | | | | | |-|-|-|-|-|- -| 0208 |[Implement Trie (Prefix Tree)](src/main/java/g0201_0300/s0208_implement_trie_prefix_tree/Trie.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, LeetCode_75_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 32 | 95.05 -| 0211 |[Design Add and Search Words Data Structure](src/main/java/g0201_0300/s0211_design_add_and_search_words_data_structure/WordDictionary.java)| Medium | String, Depth_First_Search, Design, Trie | 156 | 99.85 -| 0212 |[Word Search II](src/main/java/g0201_0300/s0212_word_search_ii/Solution.java)| Hard | Top_Interview_Questions, Array, String, Matrix, Backtracking, Trie | 17 | 99.16 +| 0350 |[Intersection of Two Arrays II](src/main/java/g0301_0400/s0350_intersection_of_two_arrays_ii/Solution.java)| Easy | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 4 | 69.62 +| 0633 |[Sum of Square Numbers](src/main/java/g0601_0700/s0633_sum_of_square_numbers/Solution.java)| Medium | Math, Binary_Search, Two_Pointers | 4 | 82.92 -#### Top Interview 150 Backtracking +#### Day 11 | | | | | | |-|-|-|-|-|- -| 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, LeetCode_75_Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 -| 0077 |[Combinations](src/main/java/g0001_0100/s0077_combinations/Solution.java)| Medium | Backtracking | 15 | 92.38 -| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 -| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 -| 0052 |[N-Queens II](src/main/java/g0001_0100/s0052_n_queens_ii/Solution.java)| Hard | Backtracking | 0 | 100.00 -| 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 -| 0079 |[Word Search](src/main/java/g0001_0100/s0079_word_search/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Backtracking, Big_O_Time_O(4^(m\*n))_Space_O(m\*n) | 64 | 98.51 +| 1855 |[Maximum Distance Between a Pair of Values](src/main/java/g1801_1900/s1855_maximum_distance_between_a_pair_of_values/Solution.java)| Medium | Array, Greedy, Binary_Search, Two_Pointers | 4 | 62.20 +| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -#### Top Interview 150 Divide and Conquer +#### Day 12 | | | | | | |-|-|-|-|-|- -| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 -| 0148 |[Sort List](src/main/java/g0101_0200/s0148_sort_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Sorting, Two_Pointers, Linked_List, Divide_and_Conquer, Merge_Sort, Big_O_Time_O(log(N))_Space_O(log(N)) | 9 | 93.90 -| 0427 |[Construct Quad Tree](src/main/java/g0401_0500/s0427_construct_quad_tree/Solution.java)| Medium | Array, Tree, Matrix, Divide_and_Conquer | 0 | 100.00 -| 0023 |[Merge k Sorted Lists](src/main/java/g0001_0100/s0023_merge_k_sorted_lists/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Heap_Priority_Queue, Linked_List, Divide_and_Conquer, Merge_Sort, Big_O_Time_O(k\*n\*log(k))_Space_O(log(k)) | 1 | 99.86 +| 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 -#### Top Interview 150 Kadane's Algorithm +### Binary Search II + +#### Day 1 | | | | | | |-|-|-|-|-|- -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 -| 0918 |[Maximum Sum Circular Subarray](src/main/java/g0901_1000/s0918_maximum_sum_circular_subarray/Solution.java)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue | 2 | 99.34 +| 0209 |[Minimum Size Subarray Sum](src/main/java/g0201_0300/s0209_minimum_size_subarray_sum/Solution.java)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 1 | 99.76 +| 0611 |[Valid Triangle Number](src/main/java/g0601_0700/s0611_valid_triangle_number/Solution.java)| Medium | Array, Sorting, Greedy, Binary_Search, Two_Pointers | 10 | 100.00 -#### Top Interview 150 Binary Search +#### Day 2 | | | | | | |-|-|-|-|-|- -| 0035 |[Search Insert Position](src/main/java/g0001_0100/s0035_search_insert_position/Solution.java)| Easy | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 -| 0162 |[Find Peak Element](src/main/java/g0101_0200/s0162_find_peak_element/Solution.java)| Medium | Top_Interview_Questions, Array, Binary_Search, LeetCode_75_Binary_Search | 0 | 100.00 -| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -| 0034 |[Find First and Last Position of Element in Sorted Array](src/main/java/g0001_0100/s0034_find_first_and_last_position_of_element_in_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -| 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 -| 0004 |[Median of Two Sorted Arrays](src/main/java/g0001_0100/s0004_median_of_two_sorted_arrays/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Divide_and_Conquer, Big_O_Time_O(log(min(N,M)))_Space_O(1), AI_can_be_used_to_solve_the_task | 1 | 100.00 +| 0658 |[Find K Closest Elements](src/main/java/g0601_0700/s0658_find_k_closest_elements/Solution.java)| Medium | Array, Sorting, Binary_Search, Two_Pointers, Heap_Priority_Queue | 3 | 99.20 +| 1894 |[Find the Student that Will Replace the Chalk](src/main/java/g1801_1900/s1894_find_the_student_that_will_replace_the_chalk/Solution.java)| Medium | Array, Binary_Search, Simulation, Prefix_Sum | 2 | 76.67 -#### Top Interview 150 Heap +#### Day 3 | | | | | | |-|-|-|-|-|- -| 0215 |[Kth Largest Element in an Array](src/main/java/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, LeetCode_75_Heap/Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 5 | 70.82 -| 0502 |[IPO](src/main/java/g0501_0600/s0502_ipo/Solution.java)| Hard | Array, Sorting, Greedy, Heap_Priority_Queue | 64 | 97.22 -| 0373 |[Find K Pairs with Smallest Sums](src/main/java/g0301_0400/s0373_find_k_pairs_with_smallest_sums/Solution.java)| Medium | Array, Heap_Priority_Queue | 27 | 90.23 -| 0295 |[Find Median from Data Stream](src/main/java/g0201_0300/s0295_find_median_from_data_stream/MedianFinder.java)| Hard | Top_100_Liked_Questions, Sorting, Two_Pointers, Design, Heap_Priority_Queue, Data_Stream, Big_O_Time_O(n\*log_n)_Space_O(n) | 83 | 99.56 +| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 +| 1760 |[Minimum Limit of Balls in a Bag](src/main/java/g1701_1800/s1760_minimum_limit_of_balls_in_a_bag/Solution.java)| Medium | Array, Binary_Search | 44 | 78.49 -#### Top Interview 150 Bit Manipulation +#### Day 4 | | | | | | |-|-|-|-|-|- -| 0067 |[Add Binary](src/main/java/g0001_0100/s0067_add_binary/Solution.java)| Easy | String, Math, Bit_Manipulation, Simulation | 1 | 99.82 -| 0190 |[Reverse Bits](src/main/java/g0101_0200/s0190_reverse_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer | 0 | 100.00 -| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 -| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 -| 0137 |[Single Number II](src/main/java/g0101_0200/s0137_single_number_ii/Solution.java)| Medium | Array, Bit_Manipulation | 0 | 100.00 -| 0201 |[Bitwise AND of Numbers Range](src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java)| Medium | Bit_Manipulation | 3 | 100.00 +| 0875 |[Koko Eating Bananas](src/main/java/g0801_0900/s0875_koko_eating_bananas/Solution.java)| Medium | Array, Binary_Search, LeetCode_75_Binary_Search | 15 | 91.32 +| 1552 |[Magnetic Force Between Two Balls](src/main/java/g1501_1600/s1552_magnetic_force_between_two_balls/Solution.java)| Medium | Array, Sorting, Binary_Search | 39 | 99.65 -#### Top Interview 150 Math +#### Day 5 | | | | | | |-|-|-|-|-|- -| 0009 |[Palindrome Number](src/main/java/g0001_0100/s0009_palindrome_number/Solution.java)| Easy | Math, Big_O_Time_O(log10(x))_Space_O(1) | 4 | 100.00 -| 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 -| 0172 |[Factorial Trailing Zeroes](src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java)| Medium | Top_Interview_Questions, Math | 0 | 100.00 -| 0069 |[Sqrt(x)](src/main/java/g0001_0100/s0069_sqrtx/Solution.java)| Easy | Top_Interview_Questions, Math, Binary_Search | 1 | 86.67 -| 0050 |[Pow(x, n)](src/main/java/g0001_0100/s0050_powx_n/Solution.java)| Medium | Top_Interview_Questions, Math, Recursion | 0 | 100.00 -| 0149 |[Max Points on a Line](src/main/java/g0101_0200/s0149_max_points_on_a_line/Solution.java)| Hard | Top_Interview_Questions, Array, Hash_Table, Math, Geometry | 7 | 99.18 +| 0287 |[Find the Duplicate Number](src/main/java/g0201_0300/s0287_find_the_duplicate_number/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Two_Pointers, Bit_Manipulation, Big_O_Time_O(n)_Space_O(n) | 2 | 97.52 +| 1283 |[Find the Smallest Divisor Given a Threshold](src/main/java/g1201_1300/s1283_find_the_smallest_divisor_given_a_threshold/Solution.java)| Medium | Array, Binary_Search | 9 | 95.49 -#### Top Interview 150 1D DP +#### Day 6 | | | | | | |-|-|-|-|-|- -| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 -| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 -| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 +| 1898 |[Maximum Number of Removable Characters](src/main/java/g1801_1900/s1898_maximum_number_of_removable_characters/Solution.java)| Medium | Array, String, Binary_Search | 121 | 72.51 +| 1870 |[Minimum Speed to Arrive on Time](src/main/java/g1801_1900/s1870_minimum_speed_to_arrive_on_time/Solution.java)| Medium | Array, Binary_Search | 86 | 88.58 -#### Top Interview 150 Multidimensional DP +#### Day 7 | | | | | | |-|-|-|-|-|- -| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 -| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 -| 0063 |[Unique Paths II](src/main/java/g0001_0100/s0063_unique_paths_ii/Solution.java)| Medium | Array, Dynamic_Programming, Matrix | 0 | 100.00 -| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 -| 0097 |[Interleaving String](src/main/java/g0001_0100/s0097_interleaving_string/Solution.java)| Medium | String, Dynamic_Programming | 0 | 100.00 -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 -| 0123 |[Best Time to Buy and Sell Stock III](src/main/java/g0101_0200/s0123_best_time_to_buy_and_sell_stock_iii/Solution.java)| Hard | Array, Dynamic_Programming | 4 | 74.67 -| 0188 |[Best Time to Buy and Sell Stock IV](src/main/java/g0101_0200/s0188_best_time_to_buy_and_sell_stock_iv/Solution.java)| Hard | Array, Dynamic_Programming | 1 | 99.73 -| 0221 |[Maximal Square](src/main/java/g0201_0300/s0221_maximal_square/Solution.java)| Medium | Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 6 | 97.07 +| 1482 |[Minimum Number of Days to Make m Bouquets](src/main/java/g1401_1500/s1482_minimum_number_of_days_to_make_m_bouquets/Solution.java)| Medium | Array, Binary_Search | 25 | 69.18 +| 1818 |[Minimum Absolute Sum Difference](src/main/java/g1801_1900/s1818_minimum_absolute_sum_difference/Solution.java)| Medium | Array, Sorting, Binary_Search, Ordered_Set | 13 | 99.44 -### Data Structure I +#### Day 8 -#### Day 1 Array +| | | | | | +|-|-|-|-|-|- +| 0240 |[Search a 2D Matrix II](src/main/java/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Big_O_Time_O(n+m)_Space_O(1) | 5 | 99.92 +| 0275 |[H-Index II](src/main/java/g0201_0300/s0275_h_index_ii/Solution.java)| Medium | Array, Binary_Search | 0 | 100.00 + +#### Day 9 | | | | | | |-|-|-|-|-|- -| 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 +| 1838 |[Frequency of the Most Frequent Element](src/main/java/g1801_1900/s1838_frequency_of_the_most_frequent_element/Solution.java)| Medium | Array, Sorting, Greedy, Binary_Search, Prefix_Sum, Sliding_Window | 11 | 100.00 +| 0540 |[Single Element in a Sorted Array](src/main/java/g0501_0600/s0540_single_element_in_a_sorted_array/Solution.java)| Medium | Array, Binary_Search | 0 | 100.00 -#### Day 2 Array +#### Day 10 | | | | | | |-|-|-|-|-|- -| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 -| 0088 |[Merge Sorted Array](src/main/java/g0001_0100/s0088_merge_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Sorting, Two_Pointers | 0 | 100.00 +| 0222 |[Count Complete Tree Nodes](src/main/java/g0201_0300/s0222_count_complete_tree_nodes/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Search, Binary_Tree | 0 | 100.00 +| 1712 |[Ways to Split Array Into Three Subarrays](src/main/java/g1701_1800/s1712_ways_to_split_array_into_three_subarrays/Solution.java)| Medium | Array, Binary_Search, Two_Pointers, Prefix_Sum | 16 | 84.24 -#### Day 3 Array +#### Day 11 | | | | | | |-|-|-|-|-|- -| 0350 |[Intersection of Two Arrays II](src/main/java/g0301_0400/s0350_intersection_of_two_arrays_ii/Solution.java)| Easy | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 4 | 69.62 -| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 +| 0826 |[Most Profit Assigning Work](src/main/java/g0801_0900/s0826_most_profit_assigning_work/Solution.java)| Medium | Array, Sorting, Greedy, Binary_Search, Two_Pointers | 21 | 83.83 +| 0436 |[Find Right Interval](src/main/java/g0401_0500/s0436_find_right_interval/Solution.java)| Medium | Array, Sorting, Binary_Search | 20 | 81.51 -#### Day 4 Array +#### Day 12 | | | | | | |-|-|-|-|-|- -| 0566 |[Reshape the Matrix](src/main/java/g0501_0600/s0566_reshape_the_matrix/Solution.java)| Easy | Array, Matrix, Simulation | 1 | 90.08 -| 0118 |[Pascal's Triangle](src/main/java/g0101_0200/s0118_pascals_triangle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 1 | 67.08 +| 0081 |[Search in Rotated Sorted Array II](src/main/java/g0001_0100/s0081_search_in_rotated_sorted_array_ii/Solution.java)| Medium | Array, Binary_Search | 1 | 82.83 +| 0162 |[Find Peak Element](src/main/java/g0101_0200/s0162_find_peak_element/Solution.java)| Medium | Top_Interview_Questions, Array, Binary_Search, LeetCode_75_Binary_Search | 0 | 100.00 -#### Day 5 Array +#### Day 13 | | | | | | |-|-|-|-|-|- -| 0036 |[Valid Sudoku](src/main/java/g0001_0100/s0036_valid_sudoku/Solution.java)| Medium | Top_Interview_Questions, Array, Hash_Table, Matrix | 1 | 100.00 -| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 +| 0154 |[Find Minimum in Rotated Sorted Array II](src/main/java/g0101_0200/s0154_find_minimum_in_rotated_sorted_array_ii/Solution.java)| Hard | Array, Binary_Search | 1 | 77.09 +| 0528 |[Random Pick with Weight](src/main/java/g0501_0600/s0528_random_pick_with_weight/Solution.java)| Medium | Math, Binary_Search, Prefix_Sum, Randomized | 42 | 50.90 -#### Day 6 String +#### Day 14 | | | | | | |-|-|-|-|-|- -| 0387 |[First Unique Character in a String](src/main/java/g0301_0400/s0387_first_unique_character_in_a_string/Solution.java)| Easy | String, Hash_Table, Counting, Queue | 1 | 100.00 -| 0383 |[Ransom Note](src/main/java/g0301_0400/s0383_ransom_note/Solution.java)| Easy | String, Hash_Table, Counting | 1 | 99.10 -| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 +| 1508 |[Range Sum of Sorted Subarray Sums](src/main/java/g1501_1600/s1508_range_sum_of_sorted_subarray_sums/Solution.java)| Medium | Array, Sorting, Binary_Search, Two_Pointers | 60 | 93.84 +| 1574 |[Shortest Subarray to be Removed to Make Array Sorted](src/main/java/g1501_1600/s1574_shortest_subarray_to_be_removed_to_make_array_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers, Stack, Monotonic_Stack | 2 | 84.97 -#### Day 7 Linked List +#### Day 15 | | | | | | |-|-|-|-|-|- -| 0141 |[Linked List Cycle](src/main/java/g0101_0200/s0141_linked_list_cycle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 -| 0203 |[Remove Linked List Elements](src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java)| Easy | Linked_List, Recursion | 1 | 98.82 +| 1292 |[Maximum Side Length of a Square with Sum Less than or Equal to Threshold](src/main/java/g1201_1300/s1292_maximum_side_length_of_a_square_with_sum_less_than_or_equal_to_threshold/Solution.java)| Medium | Array, Binary_Search, Matrix, Prefix_Sum | 23 | 32.97 +| 1498 |[Number of Subsequences That Satisfy the Given Sum Condition](src/main/java/g1401_1500/s1498_number_of_subsequences_that_satisfy_the_given_sum_condition/Solution.java)| Medium | Array, Sorting, Binary_Search, Two_Pointers | 27 | 99.13 -#### Day 8 Linked List +#### Day 16 | | | | | | |-|-|-|-|-|- -| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -| 0083 |[Remove Duplicates from Sorted List](src/main/java/g0001_0100/s0083_remove_duplicates_from_sorted_list/Solution.java)| Easy | Linked_List | 0 | 100.00 +| 0981 |[Time Based Key-Value Store](src/main/java/g0901_1000/s0981_time_based_key_value_store/TimeMap.java)| Medium | String, Hash_Table, Binary_Search, Design | 239 | 72.78 +| 1300 |[Sum of Mutated Array Closest to Target](src/main/java/g1201_1300/s1300_sum_of_mutated_array_closest_to_target/Solution.java)| Medium | Array, Sorting, Binary_Search | 7 | 33.33 -#### Day 9 Stack Queue +#### Day 17 | | | | | | |-|-|-|-|-|- -| 0020 |[Valid Parentheses](src/main/java/g0001_0100/s0020_valid_parentheses/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 2 | 97.19 -| 0232 |[Implement Queue using Stacks](src/main/java/g0201_0300/s0232_implement_queue_using_stacks/MyQueue.java)| Easy | Stack, Design, Queue | 1 | 67.21 +| 1802 |[Maximum Value at a Given Index in a Bounded Array](src/main/java/g1801_1900/s1802_maximum_value_at_a_given_index_in_a_bounded_array/Solution.java)| Medium | Greedy, Binary_Search | 2 | 58.44 +| 1901 |[Find a Peak Element II](src/main/java/g1901_2000/s1901_find_a_peak_element_ii/Solution.java)| Medium | Array, Binary_Search, Matrix, Divide_and_Conquer | 0 | 100.00 -#### Day 10 Tree +#### Day 18 | | | | | | |-|-|-|-|-|- -| 0144 |[Binary Tree Preorder Traversal](src/main/java/g0101_0200/s0144_binary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 48.38 -| 0094 |[Binary Tree Inorder Traversal](src/main/java/g0001_0100/s0094_binary_tree_inorder_traversal/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0145 |[Binary Tree Postorder Traversal](src/main/java/g0101_0200/s0145_binary_tree_postorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 49.11 +| 1146 |[Snapshot Array](src/main/java/g1101_1200/s1146_snapshot_array/SnapshotArray.java)| Medium | Array, Hash_Table, Binary_Search, Design | 68 | 45.86 +| 1488 |[Avoid Flood in The City](src/main/java/g1401_1500/s1488_avoid_flood_in_the_city/Solution.java)| Medium | Array, Hash_Table, Greedy, Binary_Search, Heap_Priority_Queue | 82 | 75.08 -#### Day 11 Tree +#### Day 19 | | | | | | |-|-|-|-|-|- -| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 -| 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 -| 0101 |[Symmetric Tree](src/main/java/g0101_0200/s0101_symmetric_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 1562 |[Find Latest Group of Size M](src/main/java/g1501_1600/s1562_find_latest_group_of_size_m/Solution.java)| Medium | Array, Binary_Search, Simulation | 8 | 90.00 +| 1648 |[Sell Diminishing-Valued Colored Balls](src/main/java/g1601_1700/s1648_sell_diminishing_valued_colored_balls/Solution.java)| Medium | Array, Math, Sorting, Greedy, Binary_Search, Heap_Priority_Queue | 27 | 80.64 -#### Day 12 Tree +#### Day 20 | | | | | | |-|-|-|-|-|- -| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0112 |[Path Sum](src/main/java/g0101_0200/s0112_path_sum/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 1201 |[Ugly Number III](src/main/java/g1201_1300/s1201_ugly_number_iii/Solution.java)| Medium | Math, Binary_Search, Number_Theory | 0 | 100.00 +| 0911 |[Online Election](src/main/java/g0901_1000/s0911_online_election/TopVotedCandidate.java)| Medium | Array, Hash_Table, Binary_Search, Design | 63 | 98.81 -#### Day 13 Tree +### Dynamic Programming I + +#### Day 1 | | | | | | |-|-|-|-|-|- -| 0700 |[Search in a Binary Search Tree](src/main/java/g0601_0700/s0700_search_in_a_binary_search_tree/Solution.java)| Easy | Tree, Binary_Tree, Binary_Search_Tree, LeetCode_75_Binary_Search_Tree | 0 | 100.00 -| 0701 |[Insert into a Binary Search Tree](src/main/java/g0701_0800/s0701_insert_into_a_binary_search_tree/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 +| 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 +| 1137 |[N-th Tribonacci Number](src/main/java/g1101_1200/s1137_n_th_tribonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Memoization, LeetCode_75_DP/1D | 0 | 100.00 -#### Day 14 Tree +#### Day 2 | | | | | | |-|-|-|-|-|- -| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -| 0653 |[Two Sum IV - Input is a BST](src/main/java/g0601_0700/s0653_two_sum_iv_input_is_a_bst/Solution.java)| Easy | Hash_Table, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Two_Pointers, Binary_Search_Tree | 5 | 74.23 -| 0235 |[Lowest Common Ancestor of a Binary Search Tree](src/main/java/g0201_0300/s0235_lowest_common_ancestor_of_a_binary_search_tree/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 4 | 100.00 +| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0746 |[Min Cost Climbing Stairs](src/main/java/g0701_0800/s0746_min_cost_climbing_stairs/Solution.java)| Easy | Array, Dynamic_Programming, LeetCode_75_DP/1D | 1 | 86.38 -### Data Structure II +#### Day 3 -#### Day 1 Array +| | | | | | +|-|-|-|-|-|- +| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 +| 0740 |[Delete and Earn](src/main/java/g0701_0800/s0740_delete_and_earn/Solution.java)| Medium | Array, Hash_Table, Dynamic_Programming | 4 | 77.68 + +#### Day 4 | | | | | | |-|-|-|-|-|- -| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 -| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 -| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -#### Day 2 Array +#### Day 5 | | | | | | |-|-|-|-|-|- -| 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 -| 0706 |[Design HashMap](src/main/java/g0701_0800/s0706_design_hashmap/MyHashMap.java)| Easy | Array, Hash_Table, Design, Linked_List, Hash_Function | 13 | 95.71 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 +| 0918 |[Maximum Sum Circular Subarray](src/main/java/g0901_1000/s0918_maximum_sum_circular_subarray/Solution.java)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue | 2 | 99.34 -#### Day 3 Array +#### Day 6 | | | | | | |-|-|-|-|-|- -| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 -| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 -| 0059 |[Spiral Matrix II](src/main/java/g0001_0100/s0059_spiral_matrix_ii/Solution.java)| Medium | Array, Matrix, Simulation | 0 | 100.00 +| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 92.74 +| 1567 |[Maximum Length of Subarray With Positive Product](src/main/java/g1501_1600/s1567_maximum_length_of_subarray_with_positive_product/Solution.java)| Medium | Array, Dynamic_Programming, Greedy | 4 | 80.86 -#### Day 4 Array +#### Day 7 | | | | | | |-|-|-|-|-|- -| 0240 |[Search a 2D Matrix II](src/main/java/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Big_O_Time_O(n+m)_Space_O(1) | 5 | 99.92 -| 0435 |[Non-overlapping Intervals](src/main/java/g0401_0500/s0435_non_overlapping_intervals/Solution.java)| Medium | Array, Dynamic_Programming, Sorting, Greedy, LeetCode_75_Intervals | 96 | 47.37 +| 1014 |[Best Sightseeing Pair](src/main/java/g1001_1100/s1014_best_sightseeing_pair/Solution.java)| Medium | Array, Dynamic_Programming | 2 | 99.86 +| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 +| 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 76.91 -#### Day 5 Array +#### Day 8 | | | | | | |-|-|-|-|-|- -| 0334 |[Increasing Triplet Subsequence](src/main/java/g0301_0400/s0334_increasing_triplet_subsequence/Solution.java)| Medium | Array, Greedy, LeetCode_75_Array/String | 2 | 99.33 -| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 -| 0560 |[Subarray Sum Equals K](src/main/java/g0501_0600/s0560_subarray_sum_equals_k/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Prefix_Sum, Big_O_Time_O(n)_Space_O(n) | 22 | 95.17 +| 0309 |[Best Time to Buy and Sell Stock with Cooldown](src/main/java/g0301_0400/s0309_best_time_to_buy_and_sell_stock_with_cooldown/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 +| 0714 |[Best Time to Buy and Sell Stock with Transaction Fee](src/main/java/g0701_0800/s0714_best_time_to_buy_and_sell_stock_with_transaction_fee/Solution.java)| Medium | Array, Dynamic_Programming, Greedy, LeetCode_75_DP/Multidimensional | 4 | 78.57 -#### Day 6 String +#### Day 9 | | | | | | |-|-|-|-|-|- -| 0415 |[Add Strings](src/main/java/g0401_0500/s0415_add_strings/Solution.java)| Easy | String, Math, Simulation | 3 | 82.41 -| 0409 |[Longest Palindrome](src/main/java/g0401_0500/s0409_longest_palindrome/Solution.java)| Easy | String, Hash_Table, Greedy | 2 | 92.90 +| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 +| 0042 |[Trapping Rain Water](src/main/java/g0001_0100/s0042_trapping_rain_water/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Two_Pointers, Stack, Monotonic_Stack, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -#### Day 7 String +#### Day 10 | | | | | | |-|-|-|-|-|- -| 0290 |[Word Pattern](src/main/java/g0201_0300/s0290_word_pattern/Solution.java)| Easy | String, Hash_Table | 0 | 100.00 -| 0763 |[Partition Labels](src/main/java/g0701_0800/s0763_partition_labels/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Greedy, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 100.00 +| 0413 |[Arithmetic Slices](src/main/java/g0401_0500/s0413_arithmetic_slices/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 +| 0091 |[Decode Ways](src/main/java/g0001_0100/s0091_decode_ways/Solution.java)| Medium | Top_Interview_Questions, String, Dynamic_Programming | 2 | 66.37 -#### Day 8 String +#### Day 11 | | | | | | |-|-|-|-|-|- -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 -| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 +| 0264 |[Ugly Number II](src/main/java/g0201_0300/s0264_ugly_number_ii/Solution.java)| Medium | Hash_Table, Dynamic_Programming, Math, Heap_Priority_Queue | 2 | 99.91 +| 0096 |[Unique Binary Search Trees](src/main/java/g0001_0100/s0096_unique_binary_search_trees/Solution.java)| Medium | Dynamic_Programming, Math, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -#### Day 9 String +#### Day 12 | | | | | | |-|-|-|-|-|- -| 0187 |[Repeated DNA Sequences](src/main/java/g0101_0200/s0187_repeated_dna_sequences/Solution.java)| Medium | String, Hash_Table, Bit_Manipulation, Sliding_Window, Hash_Function, Rolling_Hash | 29 | 77.11 -| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 +| 0118 |[Pascal's Triangle](src/main/java/g0101_0200/s0118_pascals_triangle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 1 | 67.08 +| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 -#### Day 10 Linked List +#### Day 13 | | | | | | |-|-|-|-|-|- -| 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 -| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0931 |[Minimum Falling Path Sum](src/main/java/g0901_1000/s0931_minimum_falling_path_sum/Solution.java)| Medium | Array, Dynamic_Programming, Matrix | 4 | 72.19 +| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 -#### Day 11 Linked List +#### Day 14 | | | | | | |-|-|-|-|-|- -| 0160 |[Intersection of Two Linked Lists](src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(M+N)_Space_O(1) | 1 | 99.92 -| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 1314 |[Matrix Block Sum](src/main/java/g1301_1400/s1314_matrix_block_sum/Solution.java)| Medium | Array, Matrix, Prefix_Sum | 5 | 67.46 +| 0304 |[Range Sum Query 2D - Immutable](src/main/java/g0301_0400/s0304_range_sum_query_2d_immutable/NumMatrix.java)| Medium | Array, Matrix, Design, Prefix_Sum | 153 | 87.51 -#### Day 12 Linked List +#### Day 15 | | | | | | |-|-|-|-|-|- -| 0024 |[Swap Nodes in Pairs](src/main/java/g0001_0100/s0024_swap_nodes_in_pairs/Solution.java)| Medium | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 +| 0062 |[Unique Paths](src/main/java/g0001_0100/s0062_unique_paths/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Combinatorics, LeetCode_75_DP/Multidimensional, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 +| 0063 |[Unique Paths II](src/main/java/g0001_0100/s0063_unique_paths_ii/Solution.java)| Medium | Array, Dynamic_Programming, Matrix | 0 | 100.00 -#### Day 13 Linked List +#### Day 16 | | | | | | |-|-|-|-|-|- -| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 -| 0143 |[Reorder List](src/main/java/g0101_0200/s0143_reorder_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List, Recursion | 2 | 72.59 +| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 +| 0221 |[Maximal Square](src/main/java/g0201_0300/s0221_maximal_square/Solution.java)| Medium | Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 6 | 97.07 -#### Day 14 Stack Queue +#### Day 17 | | | | | | |-|-|-|-|-|- -| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 -| 1249 |[Minimum Remove to Make Valid Parentheses](src/main/java/g1201_1300/s1249_minimum_remove_to_make_valid_parentheses/Solution.java)| Medium | String, Stack | 13 | 94.62 -| 1823 |[Find the Winner of the Circular Game](src/main/java/g1801_1900/s1823_find_the_winner_of_the_circular_game/Solution.java)| Medium | Array, Math, Simulation, Recursion, Queue | 3 | 64.85 +| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 +| 0516 |[Longest Palindromic Subsequence](src/main/java/g0501_0600/s0516_longest_palindromic_subsequence/Solution.java)| Medium | String, Dynamic_Programming | 88 | 58.87 -#### Day 15 Tree +#### Day 18 | | | | | | |-|-|-|-|-|- -| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 -| 0105 |[Construct Binary Tree from Preorder and Inorder Traversal](src/main/java/g0101_0200/s0105_construct_binary_tree_from_preorder_and_inorder_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer, Big_O_Time_O(N)_Space_O(N) | 1 | 96.33 -| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 +| 0376 |[Wiggle Subsequence](src/main/java/g0301_0400/s0376_wiggle_subsequence/Solution.java)| Medium | Array, Dynamic_Programming, Greedy | 0 | 100.00 -#### Day 16 Tree +#### Day 19 | | | | | | |-|-|-|-|-|- -| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 -| 0113 |[Path Sum II](src/main/java/g0101_0200/s0113_path_sum_ii/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Backtracking | 1 | 100.00 -| 0450 |[Delete Node in a BST](src/main/java/g0401_0500/s0450_delete_node_in_a_bst/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree, LeetCode_75_Binary_Search_Tree | 0 | 100.00 +| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 +| 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n\*m)_Space_O(n\*m) | 19 | 89.05 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 -#### Day 17 Tree +#### Day 20 | | | | | | |-|-|-|-|-|- -| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 +| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 +| 0518 |[Coin Change 2](src/main/java/g0501_0600/s0518_coin_change_2/Solution.java)| Medium | Array, Dynamic_Programming | 4 | 84.67 -#### Day 18 Tree +#### Day 21 | | | | | | |-|-|-|-|-|- -| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 -| 0297 |[Serialize and Deserialize Binary Tree](src/main/java/g0201_0300/s0297_serialize_and_deserialize_binary_tree/Codec.java)| Hard | String, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Design | 7 | 98.13 +| 0377 |[Combination Sum IV](src/main/java/g0301_0400/s0377_combination_sum_iv/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 92.54 +| 0343 |[Integer Break](src/main/java/g0301_0400/s0343_integer_break/Solution.java)| Medium | Dynamic_Programming, Math | 0 | 100.00 +| 0279 |[Perfect Squares](src/main/java/g0201_0300/s0279_perfect_squares/Solution.java)| Medium | Top_100_Liked_Questions, Dynamic_Programming, Math, Breadth_First_Search | 1 | 100.00 -#### Day 19 Graph +### Programming Skills I + +#### Day 1 Basic Data Type | | | | | | |-|-|-|-|-|- -| 0997 |[Find the Town Judge](src/main/java/g0901_1000/s0997_find_the_town_judge/Solution.java)| Easy | Array, Hash_Table, Graph | 3 | 80.64 -| 1557 |[Minimum Number of Vertices to Reach All Nodes](src/main/java/g1501_1600/s1557_minimum_number_of_vertices_to_reach_all_nodes/Solution.java)| Medium | Graph | 8 | 99.94 -| 0841 |[Keys and Rooms](src/main/java/g0801_0900/s0841_keys_and_rooms/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 3 | 51.54 +| 1523 |[Count Odd Numbers in an Interval Range](src/main/java/g1501_1600/s1523_count_odd_numbers_in_an_interval_range/Solution.java)| Easy | Math | 0 | 100.00 +| 1491 |[Average Salary Excluding the Minimum and Maximum Salary](src/main/java/g1401_1500/s1491_average_salary_excluding_the_minimum_and_maximum_salary/Solution.java)| Easy | Array, Sorting | 0 | 100.00 -#### Day 20 Heap Priority Queue +#### Day 2 Operator | | | | | | |-|-|-|-|-|- -| 0215 |[Kth Largest Element in an Array](src/main/java/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, LeetCode_75_Heap/Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 5 | 70.82 -| 0347 |[Top K Frequent Elements](src/main/java/g0301_0400/s0347_top_k_frequent_elements/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Divide_and_Conquer, Quickselect, Bucket_Sort, Big_O_Time_O(n\*log(n))_Space_O(k) | 9 | 97.30 +| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 +| 1281 |[Subtract the Product and Sum of Digits of an Integer](src/main/java/g1201_1300/s1281_subtract_the_product_and_sum_of_digits_of_an_integer/Solution.java)| Easy | Math | 0 | 100.00 -#### Day 21 Heap Priority Queue +#### Day 3 Conditional Statements | | | | | | |-|-|-|-|-|- -| 0451 |[Sort Characters By Frequency](src/main/java/g0401_0500/s0451_sort_characters_by_frequency/Solution.java)| Medium | String, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Bucket_Sort | 13 | 89.63 -| 0973 |[K Closest Points to Origin](src/main/java/g0901_1000/s0973_k_closest_points_to_origin/Solution.java)| Medium | Array, Math, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Geometry, Quickselect | 4 | 98.26 - -### Algorithm I +| 0976 |[Largest Perimeter Triangle](src/main/java/g0901_1000/s0976_largest_perimeter_triangle/Solution.java)| Easy | Array, Math, Sorting, Greedy | 7 | 99.33 +| 1779 |[Find Nearest Point That Has the Same X or Y Coordinate](src/main/java/g1701_1800/s1779_find_nearest_point_that_has_the_same_x_or_y_coordinate/Solution.java)| Easy | Array | 1 | 100.00 -#### Day 1 Binary Search +#### Day 4 Loop | | | | | | |-|-|-|-|-|- -| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 -| 0278 |[First Bad Version](src/main/java/g0201_0300/s0278_first_bad_version/Solution.java)| Easy | Binary_Search, Interactive | 15 | 87.89 -| 0035 |[Search Insert Position](src/main/java/g0001_0100/s0035_search_insert_position/Solution.java)| Easy | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 1822 |[Sign of the Product of an Array](src/main/java/g1801_1900/s1822_sign_of_the_product_of_an_array/Solution.java)| Easy | Array, Math | 1 | 58.05 +| 1502 |[Can Make Arithmetic Progression From Sequence](src/main/java/g1501_1600/s1502_can_make_arithmetic_progression_from_sequence/Solution.java)| Easy | Array, Sorting | 2 | 90.55 +| 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 +| 1790 |[Check if One String Swap Can Make Strings Equal](src/main/java/g1701_1800/s1790_check_if_one_string_swap_can_make_strings_equal/Solution.java)| Easy | String, Hash_Table, Counting | 0 | 100.00 -#### Day 2 Two Pointers +#### Day 5 Function | | | | | | |-|-|-|-|-|- -| 0977 |[Squares of a Sorted Array](src/main/java/g0901_1000/s0977_squares_of_a_sorted_array/Solution.java)| Easy | Array, Sorting, Two_Pointers | 1 | 100.00 -| 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0589 |[N-ary Tree Preorder Traversal](src/main/java/g0501_0600/s0589_n_ary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Stack | 1 | 90.98 +| 0496 |[Next Greater Element I](src/main/java/g0401_0500/s0496_next_greater_element_i/Solution.java)| Easy | Array, Hash_Table, Stack, Monotonic_Stack | 4 | 81.18 +| 1232 |[Check If It Is a Straight Line](src/main/java/g1201_1300/s1232_check_if_it_is_a_straight_line/Solution.java)| Easy | Array, Math, Geometry | 0 | 100.00 -#### Day 3 Two Pointers +#### Day 6 Array | | | | | | |-|-|-|-|-|- +| 1588 |[Sum of All Odd Length Subarrays](src/main/java/g1501_1600/s1588_sum_of_all_odd_length_subarrays/Solution.java)| Easy | Array, Math, Prefix_Sum | 0 | 100.00 | 0283 |[Move Zeroes](src/main/java/g0201_0300/s0283_move_zeroes/Solution.java)| Easy | Top_100_Liked_Questions, Array, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 83.99 -| 0167 |[Two Sum II - Input Array Is Sorted](src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers | 2 | 92.62 +| 1672 |[Richest Customer Wealth](src/main/java/g1601_1700/s1672_richest_customer_wealth/Solution.java)| Easy | Array, Matrix | 0 | 100.00 -#### Day 4 Two Pointers +#### Day 7 Array | | | | | | |-|-|-|-|-|- -| 0344 |[Reverse String](src/main/java/g0301_0400/s0344_reverse_string/Solution.java)| Easy | String, Two_Pointers, Recursion | 1 | 99.91 -| 0557 |[Reverse Words in a String III](src/main/java/g0501_0600/s0557_reverse_words_in_a_string_iii/Solution.java)| Easy | String, Two_Pointers | 4 | 97.75 +| 1572 |[Matrix Diagonal Sum](src/main/java/g1501_1600/s1572_matrix_diagonal_sum/Solution.java)| Easy | Array, Matrix | 0 | 100.00 +| 0566 |[Reshape the Matrix](src/main/java/g0501_0600/s0566_reshape_the_matrix/Solution.java)| Easy | Array, Matrix, Simulation | 1 | 90.08 -#### Day 5 Two Pointers +#### Day 8 String | | | | | | |-|-|-|-|-|- -| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 -| 0019 |[Remove Nth Node From End of List](src/main/java/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Two_Pointers, Linked_List, Big_O_Time_O(L)_Space_O(L) | 0 | 100.00 +| 1768 |[Merge Strings Alternately](src/main/java/g1701_1800/s1768_merge_strings_alternately/Solution.java)| Easy | String, Two_Pointers, LeetCode_75_Array/String | 1 | 86.26 +| 1678 |[Goal Parser Interpretation](src/main/java/g1601_1700/s1678_goal_parser_interpretation/Solution.java)| Easy | String | 0 | 100.00 +| 0389 |[Find the Difference](src/main/java/g0301_0400/s0389_find_the_difference/Solution.java)| Easy | String, Hash_Table, Sorting, Bit_Manipulation | 1 | 100.00 -#### Day 6 Sliding Window +#### Day 9 String | | | | | | |-|-|-|-|-|- -| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 -| 0567 |[Permutation in String](src/main/java/g0501_0600/s0567_permutation_in_string/Solution.java)| Medium | String, Hash_Table, Two_Pointers, Sliding_Window | 5 | 93.93 +| 0709 |[To Lower Case](src/main/java/g0701_0800/s0709_to_lower_case/Solution.java)| Easy | String | 1 | 71.74 +| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping/Solution.java)| Easy | String | 0 | 100.00 +| 0953 |[Verifying an Alien Dictionary](src/main/java/g0901_1000/s0953_verifying_an_alien_dictionary/Solution.java)| Easy | Array, String, Hash_Table | 0 | 100.00 -#### Day 7 Breadth First Search Depth First Search +#### Day 10 Linked List and Tree | | | | | | |-|-|-|-|-|- -| 0733 |[Flood Fill](src/main/java/g0701_0800/s0733_flood_fill/Solution.java)| Easy | Array, Depth_First_Search, Breadth_First_Search, Matrix | 1 | 85.36 -| 0695 |[Max Area of Island](src/main/java/g0601_0700/s0695_max_area_of_island/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 3 | 76.79 +| 1290 |[Convert Binary Number in a Linked List to Integer](src/main/java/g1201_1300/s1290_convert_binary_number_in_a_linked_list_to_integer/Solution.java)| Easy | Math, Linked_List | 0 | 100.00 +| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 +| 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 +| 0404 |[Sum of Left Leaves](src/main/java/g0401_0500/s0404_sum_of_left_leaves/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 1 | 29.26 -#### Day 8 Breadth First Search Depth First Search +#### Day 11 Containers and Libraries | | | | | | |-|-|-|-|-|- -| 0617 |[Merge Two Binary Trees](src/main/java/g0601_0700/s0617_merge_two_binary_trees/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 1 | 72.47 -| 0116 |[Populating Next Right Pointers in Each Node](src/main/java/g0101_0200/s0116_populating_next_right_pointers_in_each_node/Solution.java)| Medium | Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 0 | 100.00 +| 1356 |[Sort Integers by The Number of 1 Bits](src/main/java/g1301_1400/s1356_sort_integers_by_the_number_of_1_bits/Solution.java)| Easy | Array, Sorting, Bit_Manipulation, Counting | 10 | 65.50 +| 0232 |[Implement Queue using Stacks](src/main/java/g0201_0300/s0232_implement_queue_using_stacks/MyQueue.java)| Easy | Stack, Design, Queue | 1 | 67.21 +| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 +| 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 -#### Day 9 Breadth First Search Depth First Search +#### Day 12 Class and Object | | | | | | |-|-|-|-|-|- -| 0542 |[01 Matrix](src/main/java/g0501_0600/s0542_01_matrix/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search, Matrix | 7 | 95.83 -| 0994 |[Rotting Oranges](src/main/java/g0901_1000/s0994_rotting_oranges/Solution.java)| Medium | Top_100_Liked_Questions, Array, Breadth_First_Search, Matrix, LeetCode_75_Graphs/BFS | 3 | 74.27 +| 1603 |[Design Parking System](src/main/java/g1601_1700/s1603_design_parking_system/ParkingSystem.java)| Easy | Design, Simulation, Counting | 8 | 76.16 +| 0303 |[Range Sum Query - Immutable](src/main/java/g0301_0400/s0303_range_sum_query_immutable/NumArray.java)| Easy | Array, Design, Prefix_Sum | 7 | 100.00 -#### Day 10 Recursion Backtracking +### Programming Skills II + +#### Day 1 | | | | | | |-|-|-|-|-|- -| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 -| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0896 |[Monotonic Array](src/main/java/g0801_0900/s0896_monotonic_array/Solution.java)| Easy | Array | 2 | 86.21 +| 0028 |[Find the Index of the First Occurrence in a String](src/main/java/g0001_0100/s0028_find_the_index_of_the_first_occurrence_in_a_string/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers, String_Matching | 0 | 100.00 -#### Day 11 Recursion Backtracking +#### Day 2 | | | | | | |-|-|-|-|-|- -| 0077 |[Combinations](src/main/java/g0001_0100/s0077_combinations/Solution.java)| Medium | Backtracking | 15 | 92.38 -| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 -| 0784 |[Letter Case Permutation](src/main/java/g0701_0800/s0784_letter_case_permutation/Solution.java)| Medium | String, Bit_Manipulation, Backtracking | 10 | 40.38 +| 0110 |[Balanced Binary Tree](src/main/java/g0101_0200/s0110_balanced_binary_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree | 1 | 98.82 +| 0459 |[Repeated Substring Pattern](src/main/java/g0401_0500/s0459_repeated_substring_pattern/Solution.java)| Easy | String, String_Matching | 8 | 96.64 -#### Day 12 Dynamic Programming +#### Day 3 | | | | | | |-|-|-|-|-|- -| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 +| 0150 |[Evaluate Reverse Polish Notation](src/main/java/g0101_0200/s0150_evaluate_reverse_polish_notation/Solution.java)| Medium | Top_Interview_Questions, Array, Math, Stack | 6 | 76.50 +| 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 -#### Day 13 Bit Manipulation +#### Day 4 | | | | | | |-|-|-|-|-|- -| 0231 |[Power of Two](src/main/java/g0201_0300/s0231_power_of_two/Solution.java)| Easy | Math, Bit_Manipulation, Recursion | 1 | 100.00 -| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 +| 1367 |[Linked List in Binary Tree](src/main/java/g1301_1400/s1367_linked_list_in_binary_tree/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 2 | 61.23 +| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 -#### Day 14 Bit Manipulation +#### Day 5 | | | | | | |-|-|-|-|-|- -| 0190 |[Reverse Bits](src/main/java/g0101_0200/s0190_reverse_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer | 0 | 100.00 -| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 - -### Algorithm II +| 0067 |[Add Binary](src/main/java/g0001_0100/s0067_add_binary/Solution.java)| Easy | String, Math, Bit_Manipulation, Simulation | 1 | 99.82 +| 0989 |[Add to Array-Form of Integer](src/main/java/g0901_1000/s0989_add_to_array_form_of_integer/Solution.java)| Easy | Array, Math | 7 | 65.92 -#### Day 1 Binary Search +#### Day 6 | | | | | | |-|-|-|-|-|- -| 0034 |[Find First and Last Position of Element in Sorted Array](src/main/java/g0001_0100/s0034_find_first_and_last_position_of_element_in_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 +| 0739 |[Daily Temperatures](src/main/java/g0701_0800/s0739_daily_temperatures/Solution.java)| Medium | Top_100_Liked_Questions, Array, Stack, Monotonic_Stack, LeetCode_75_Monotonic_Stack, Big_O_Time_O(n)_Space_O(n) | 8 | 96.83 +| 0058 |[Length of Last Word](src/main/java/g0001_0100/s0058_length_of_last_word/Solution.java)| Easy | String | 0 | 100.00 -#### Day 2 Binary Search +#### Day 7 | | | | | | |-|-|-|-|-|- -| 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 -| 0162 |[Find Peak Element](src/main/java/g0101_0200/s0162_find_peak_element/Solution.java)| Medium | Top_Interview_Questions, Array, Binary_Search, LeetCode_75_Binary_Search | 0 | 100.00 +| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 +| 1886 |[Determine Whether Matrix Can Be Obtained By Rotation](src/main/java/g1801_1900/s1886_determine_whether_matrix_can_be_obtained_by_rotation/Solution.java)| Easy | Array, Matrix | 1 | 78.38 -#### Day 3 Two Pointers +#### Day 8 | | | | | | |-|-|-|-|-|- -| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 -| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 +| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 +| 0973 |[K Closest Points to Origin](src/main/java/g0901_1000/s0973_k_closest_points_to_origin/Solution.java)| Medium | Array, Math, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Geometry, Quickselect | 4 | 98.26 -#### Day 4 Two Pointers +#### Day 9 | | | | | | |-|-|-|-|-|- -| 0844 |[Backspace String Compare](src/main/java/g0801_0900/s0844_backspace_string_compare/Solution.java)| Easy | String, Two_Pointers, Stack, Simulation | 0 | 100.00 -| 0986 |[Interval List Intersections](src/main/java/g0901_1000/s0986_interval_list_intersections/Solution.java)| Medium | Array, Two_Pointers | 2 | 99.95 -| 0011 |[Container With Most Water](src/main/java/g0001_0100/s0011_container_with_most_water/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Greedy, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 3 | 96.01 +| 1630 |[Arithmetic Subarrays](src/main/java/g1601_1700/s1630_arithmetic_subarrays/Solution.java)| Medium | Array, Sorting | 8 | 93.62 +| 0429 |[N-ary Tree Level Order Traversal](src/main/java/g0401_0500/s0429_n_ary_tree_level_order_traversal/Solution.java)| Medium | Breadth_First_Search, Tree | 3 | 80.26 -#### Day 5 Sliding Window +#### Day 10 | | | | | | |-|-|-|-|-|- -| 0438 |[Find All Anagrams in a String](src/main/java/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 3 | 99.83 -| 0713 |[Subarray Product Less Than K](src/main/java/g0701_0800/s0713_subarray_product_less_than_k/Solution.java)| Medium | Array, Sliding_Window | 8 | 39.00 -| 0209 |[Minimum Size Subarray Sum](src/main/java/g0201_0300/s0209_minimum_size_subarray_sum/Solution.java)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 1 | 99.76 +| 0503 |[Next Greater Element II](src/main/java/g0501_0600/s0503_next_greater_element_ii/Solution.java)| Medium | Array, Stack, Monotonic_Stack | 7 | 97.03 +| 0556 |[Next Greater Element III](src/main/java/g0501_0600/s0556_next_greater_element_iii/Solution.java)| Medium | String, Math, Two_Pointers | 0 | 100.00 -#### Day 6 Breadth First Search Depth First Search +#### Day 11 | | | | | | |-|-|-|-|-|- -| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 -| 0547 |[Number of Provinces](src/main/java/g0501_0600/s0547_number_of_provinces/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find, LeetCode_75_Graphs/DFS | 2 | 69.51 +| 1376 |[Time Needed to Inform All Employees](src/main/java/g1301_1400/s1376_time_needed_to_inform_all_employees/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree | 8 | 99.85 +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 -#### Day 7 Breadth First Search Depth First Search +#### Day 12 | | | | | | |-|-|-|-|-|- -| 0117 |[Populating Next Right Pointers in Each Node II](src/main/java/g0101_0200/s0117_populating_next_right_pointers_in_each_node_ii/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 0 | 100.00 -| 0572 |[Subtree of Another Tree](src/main/java/g0501_0600/s0572_subtree_of_another_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Hash_Function, String_Matching | 2 | 97.06 +| 0438 |[Find All Anagrams in a String](src/main/java/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 3 | 99.83 +| 0713 |[Subarray Product Less Than K](src/main/java/g0701_0800/s0713_subarray_product_less_than_k/Solution.java)| Medium | Array, Sliding_Window | 8 | 39.00 -#### Day 8 Breadth First Search Depth First Search +#### Day 13 | | | | | | |-|-|-|-|-|- -| 1091 |[Shortest Path in Binary Matrix](src/main/java/g1001_1100/s1091_shortest_path_in_binary_matrix/Solution.java)| Medium | Array, Breadth_First_Search, Matrix | 22 | 69.99 -| 0130 |[Surrounded Regions](src/main/java/g0101_0200/s0130_surrounded_regions/Solution.java)| Medium | Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 2 | 84.66 -| 0797 |[All Paths From Source to Target](src/main/java/g0701_0800/s0797_all_paths_from_source_to_target/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Backtracking | 2 | 90.53 +| 0304 |[Range Sum Query 2D - Immutable](src/main/java/g0301_0400/s0304_range_sum_query_2d_immutable/NumMatrix.java)| Medium | Array, Matrix, Design, Prefix_Sum | 153 | 87.51 +| 0910 |[Smallest Range II](src/main/java/g0901_1000/s0910_smallest_range_ii/Solution.java)| Medium | Array, Math, Sorting, Greedy | 10 | 73.16 -#### Day 9 Recursion Backtracking +#### Day 14 | | | | | | |-|-|-|-|-|- -| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 0 | 100.00 -| 0090 |[Subsets II](src/main/java/g0001_0100/s0090_subsets_ii/Solution.java)| Medium | Array, Bit_Manipulation, Backtracking | 2 | 82.94 +| 0143 |[Reorder List](src/main/java/g0101_0200/s0143_reorder_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List, Recursion | 2 | 72.59 +| 0138 |[Copy List with Random Pointer](src/main/java/g0101_0200/s0138_copy_list_with_random_pointer/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 -#### Day 10 Recursion Backtracking +#### Day 15 | | | | | | |-|-|-|-|-|- -| 0047 |[Permutations II](src/main/java/g0001_0100/s0047_permutations_ii/Solution.java)| Medium | Array, Backtracking | 1 | 99.86 -| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 -| 0040 |[Combination Sum II](src/main/java/g0001_0100/s0040_combination_sum_ii/Solution.java)| Medium | Array, Backtracking | 2 | 99.75 +| 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 +| 0445 |[Add Two Numbers II](src/main/java/g0401_0500/s0445_add_two_numbers_ii/Solution.java)| Medium | Math, Stack, Linked_List | 3 | 90.38 -#### Day 11 Recursion Backtracking +#### Day 16 | | | | | | |-|-|-|-|-|- -| 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, LeetCode_75_Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 -| 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 -| 0079 |[Word Search](src/main/java/g0001_0100/s0079_word_search/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Backtracking, Big_O_Time_O(4^(m\*n))_Space_O(m\*n) | 64 | 98.51 +| 0061 |[Rotate List](src/main/java/g0001_0100/s0061_rotate_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 -#### Day 12 Dynamic Programming +#### Day 17 | | | | | | |-|-|-|-|-|- -| 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 1845 |[Seat Reservation Manager](src/main/java/g1801_1900/s1845_seat_reservation_manager/SeatManager.java)| Medium | Design, Heap_Priority_Queue | 47 | 87.63 +| 0860 |[Lemonade Change](src/main/java/g0801_0900/s0860_lemonade_change/Solution.java)| Easy | Array, Greedy | 2 | 90.84 -#### Day 13 Dynamic Programming +#### Day 18 | | | | | | |-|-|-|-|-|- -| 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0062 |[Unique Paths](src/main/java/g0001_0100/s0062_unique_paths/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Combinatorics, LeetCode_75_DP/Multidimensional, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 +| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 +| 0341 |[Flatten Nested List Iterator](src/main/java/g0301_0400/s0341_flatten_nested_list_iterator/NestedIterator.java)| Medium | Depth_First_Search, Tree, Stack, Design, Queue, Iterator | 2 | 99.95 -#### Day 14 Dynamic Programming +#### Day 19 | | | | | | |-|-|-|-|-|- -| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 -| 0413 |[Arithmetic Slices](src/main/java/g0401_0500/s0413_arithmetic_slices/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 +| 1797 |[Design Authentication Manager](src/main/java/g1701_1800/s1797_design_authentication_manager/AuthenticationManager.java)| Medium | Hash_Table, Design | 41 | 92.67 +| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 -#### Day 15 Dynamic Programming +#### Day 20 | | | | | | |-|-|-|-|-|- -| 0091 |[Decode Ways](src/main/java/g0001_0100/s0091_decode_ways/Solution.java)| Medium | Top_Interview_Questions, String, Dynamic_Programming | 2 | 66.37 -| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 +| 0380 |[Insert Delete GetRandom O(1)](src/main/java/g0301_0400/s0380_insert_delete_getrandom_o1/RandomizedSet.java)| Medium | Array, Hash_Table, Math, Design, Randomized | 27 | 93.44 +| 0622 |[Design Circular Queue](src/main/java/g0601_0700/s0622_design_circular_queue/MyCircularQueue.java)| Medium | Array, Design, Linked_List, Queue | 3 | 100.00 +| 0729 |[My Calendar I](src/main/java/g0701_0800/s0729_my_calendar_i/MyCalendar.java)| Medium | Binary_Search, Design, Ordered_Set, Segment_Tree | 17 | 97.23 -#### Day 16 Dynamic Programming +### Graph Theory I + +#### Day 1 Matrix Related Problems | | | | | | |-|-|-|-|-|- -| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 -| 0673 |[Number of Longest Increasing Subsequence](src/main/java/g0601_0700/s0673_number_of_longest_increasing_subsequence/Solution.java)| Medium | Array, Dynamic_Programming, Segment_Tree, Binary_Indexed_Tree | 25 | 68.75 +| 0733 |[Flood Fill](src/main/java/g0701_0800/s0733_flood_fill/Solution.java)| Easy | Array, Depth_First_Search, Breadth_First_Search, Matrix | 1 | 85.36 +| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 -#### Day 17 Dynamic Programming +#### Day 2 Matrix Related Problems | | | | | | |-|-|-|-|-|- -| 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n\*m)_Space_O(n\*m) | 19 | 89.05 -| 0583 |[Delete Operation for Two Strings](src/main/java/g0501_0600/s0583_delete_operation_for_two_strings/Solution.java)| Medium | String, Dynamic_Programming | 12 | 79.10 +| 0695 |[Max Area of Island](src/main/java/g0601_0700/s0695_max_area_of_island/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 3 | 76.79 +| 1254 |[Number of Closed Islands](src/main/java/g1201_1300/s1254_number_of_closed_islands/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 3 | 55.59 -#### Day 18 Dynamic Programming +#### Day 3 Matrix Related Problems | | | | | | |-|-|-|-|-|- -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 -| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 -| 0343 |[Integer Break](src/main/java/g0301_0400/s0343_integer_break/Solution.java)| Medium | Dynamic_Programming, Math | 0 | 100.00 +| 1020 |[Number of Enclaves](src/main/java/g1001_1100/s1020_number_of_enclaves/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 6 | 68.24 +| 1905 |[Count Sub Islands](src/main/java/g1901_2000/s1905_count_sub_islands/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 24 | 85.54 -#### Day 19 Bit Manipulation +#### Day 4 Matrix Related Problems | | | | | | |-|-|-|-|-|- -| 0201 |[Bitwise AND of Numbers Range](src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java)| Medium | Bit_Manipulation | 3 | 100.00 +| 1162 |[As Far from Land as Possible](src/main/java/g1101_1200/s1162_as_far_from_land_as_possible/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search, Matrix | 16 | 62.40 +| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 5 | 92.62 -#### Day 20 Others +#### Day 5 Matrix Related Problems | | | | | | |-|-|-|-|-|- -| 0384 |[Shuffle an Array](src/main/java/g0301_0400/s0384_shuffle_an_array/Solution.java)| Medium | Array, Math, Randomized | 52 | 91.77 +| 1091 |[Shortest Path in Binary Matrix](src/main/java/g1001_1100/s1091_shortest_path_in_binary_matrix/Solution.java)| Medium | Array, Breadth_First_Search, Matrix | 22 | 69.99 +| 0542 |[01 Matrix](src/main/java/g0501_0600/s0542_01_matrix/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search, Matrix | 7 | 95.83 -#### Day 21 Others +#### Day 6 Matrix Related Problems | | | | | | |-|-|-|-|-|- -| 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 -| 0149 |[Max Points on a Line](src/main/java/g0101_0200/s0149_max_points_on_a_line/Solution.java)| Hard | Top_Interview_Questions, Array, Hash_Table, Math, Geometry | 7 | 99.18 - -### Binary Search I +| 0934 |[Shortest Bridge](src/main/java/g0901_1000/s0934_shortest_bridge/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 6 | 97.87 +| 1926 |[Nearest Exit from Entrance in Maze](src/main/java/g1901_2000/s1926_nearest_exit_from_entrance_in_maze/Solution.java)| Medium | Array, Breadth_First_Search, Matrix, LeetCode_75_Graphs/BFS | 12 | 40.55 -#### Day 1 +#### Day 7 Standard Traversal | | | | | | |-|-|-|-|-|- -| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 -| 0374 |[Guess Number Higher or Lower](src/main/java/g0301_0400/s0374_guess_number_higher_or_lower/Solution.java)| Easy | Binary_Search, Interactive, LeetCode_75_Binary_Search | 0 | 100.00 +| 0797 |[All Paths From Source to Target](src/main/java/g0701_0800/s0797_all_paths_from_source_to_target/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Backtracking | 2 | 90.53 +| 0841 |[Keys and Rooms](src/main/java/g0801_0900/s0841_keys_and_rooms/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 3 | 51.54 -#### Day 2 +#### Day 8 Standard Traversal | | | | | | |-|-|-|-|-|- -| 0035 |[Search Insert Position](src/main/java/g0001_0100/s0035_search_insert_position/Solution.java)| Easy | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -| 0852 |[Peak Index in a Mountain Array](src/main/java/g0801_0900/s0852_peak_index_in_a_mountain_array/Solution.java)| Medium | Array, Binary_Search | 0 | 100.00 +| 0547 |[Number of Provinces](src/main/java/g0501_0600/s0547_number_of_provinces/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find, LeetCode_75_Graphs/DFS | 2 | 69.51 +| 1319 |[Number of Operations to Make Network Connected](src/main/java/g1301_1400/s1319_number_of_operations_to_make_network_connected/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find | 9 | 67.64 -#### Day 3 +#### Day 9 Standard Traversal | | | | | | |-|-|-|-|-|- -| 0367 |[Valid Perfect Square](src/main/java/g0301_0400/s0367_valid_perfect_square/Solution.java)| Easy | Math, Binary_Search | 0 | 100.00 -| 1385 |[Find the Distance Value Between Two Arrays](src/main/java/g1301_1400/s1385_find_the_distance_value_between_two_arrays/Solution.java)| Easy | Array, Sorting, Binary_Search, Two_Pointers | 5 | 65.78 +| 1376 |[Time Needed to Inform All Employees](src/main/java/g1301_1400/s1376_time_needed_to_inform_all_employees/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree | 8 | 99.85 +| 0802 |[Find Eventual Safe States](src/main/java/g0801_0900/s0802_find_eventual_safe_states/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort | 7 | 74.93 -#### Day 4 +#### Day 10 Standard Traversal | | | | | | |-|-|-|-|-|- -| 0069 |[Sqrt(x)](src/main/java/g0001_0100/s0069_sqrtx/Solution.java)| Easy | Top_Interview_Questions, Math, Binary_Search | 1 | 86.67 -| 0744 |[Find Smallest Letter Greater Than Target](src/main/java/g0701_0800/s0744_find_smallest_letter_greater_than_target/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 +| 1129 |[Shortest Path with Alternating Colors](src/main/java/g1101_1200/s1129_shortest_path_with_alternating_colors/Solution.java)| Medium | Breadth_First_Search, Graph | 4 | 96.63 +| 1466 |[Reorder Routes to Make All Paths Lead to the City Zero](src/main/java/g1401_1500/s1466_reorder_routes_to_make_all_paths_lead_to_the_city_zero/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 39 | 97.71 +| 0847 |[Shortest Path Visiting All Nodes](src/main/java/g0801_0900/s0847_shortest_path_visiting_all_nodes/Solution.java)| Hard | Dynamic_Programming, Breadth_First_Search, Bit_Manipulation, Graph, Bitmask | 14 | 78.72 -#### Day 5 +#### Day 11 Breadth First Search | | | | | | |-|-|-|-|-|- -| 0278 |[First Bad Version](src/main/java/g0201_0300/s0278_first_bad_version/Solution.java)| Easy | Binary_Search, Interactive | 15 | 87.89 -| 0034 |[Find First and Last Position of Element in Sorted Array](src/main/java/g0001_0100/s0034_find_first_and_last_position_of_element_in_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 1306 |[Jump Game III](src/main/java/g1301_1400/s1306_jump_game_iii/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search | 2 | 96.23 +| 1654 |[Minimum Jumps to Reach Home](src/main/java/g1601_1700/s1654_minimum_jumps_to_reach_home/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search | 6 | 99.87 +| 0365 |[Water and Jug Problem](src/main/java/g0301_0400/s0365_water_and_jug_problem/Solution.java)| Medium | Math, Depth_First_Search, Breadth_First_Search | 0 | 100.00 -#### Day 6 +#### Day 12 Breadth First Search | | | | | | |-|-|-|-|-|- -| 0441 |[Arranging Coins](src/main/java/g0401_0500/s0441_arranging_coins/Solution.java)| Easy | Math, Binary_Search | 2 | 95.97 -| 1539 |[Kth Missing Positive Number](src/main/java/g1501_1600/s1539_kth_missing_positive_number/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 +| 0433 |[Minimum Genetic Mutation](src/main/java/g0401_0500/s0433_minimum_genetic_mutation/Solution.java)| Medium | String, Hash_Table, Breadth_First_Search | 0 | 100.00 +| 0752 |[Open the Lock](src/main/java/g0701_0800/s0752_open_the_lock/Solution.java)| Medium | Array, String, Hash_Table, Breadth_First_Search | 72 | 91.06 +| 0127 |[Word Ladder](src/main/java/g0101_0200/s0127_word_ladder/Solution.java)| Hard | Top_Interview_Questions, String, Hash_Table, Breadth_First_Search | 22 | 96.00 -#### Day 7 +#### Day 13 Graph Theory | | | | | | |-|-|-|-|-|- -| 0167 |[Two Sum II - Input Array Is Sorted](src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers | 2 | 92.62 -| 1608 |[Special Array With X Elements Greater Than or Equal X](src/main/java/g1601_1700/s1608_special_array_with_x_elements_greater_than_or_equal_x/Solution.java)| Easy | Array, Sorting, Binary_Search | 2 | 61.14 +| 0997 |[Find the Town Judge](src/main/java/g0901_1000/s0997_find_the_town_judge/Solution.java)| Easy | Array, Hash_Table, Graph | 3 | 80.64 +| 1557 |[Minimum Number of Vertices to Reach All Nodes](src/main/java/g1501_1600/s1557_minimum_number_of_vertices_to_reach_all_nodes/Solution.java)| Medium | Graph | 8 | 99.94 -#### Day 8 +#### Day 14 Graph Theory | | | | | | |-|-|-|-|-|- -| 1351 |[Count Negative Numbers in a Sorted Matrix](src/main/java/g1301_1400/s1351_count_negative_numbers_in_a_sorted_matrix/Solution.java)| Easy | Array, Binary_Search, Matrix | 1 | 49.66 -| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 +| 1615 |[Maximal Network Rank](src/main/java/g1601_1700/s1615_maximal_network_rank/Solution.java)| Medium | Graph | 3 | 97.34 +| 0886 |[Possible Bipartition](src/main/java/g0801_0900/s0886_possible_bipartition/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find | 20 | 80.12 +| 0785 |[Is Graph Bipartite?](src/main/java/g0701_0800/s0785_is_graph_bipartite/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find | 0 | 100.00 -#### Day 9 +### SQL I + +#### Day 1 Select | | | | | | |-|-|-|-|-|- -| 1337 |[The K Weakest Rows in a Matrix](src/main/java/g1301_1400/s1337_the_k_weakest_rows_in_a_matrix/Solution.java)| Easy | Array, Sorting, Binary_Search, Matrix, Heap_Priority_Queue | 1 | 99.77 -| 1346 |[Check If N and Its Double Exist](src/main/java/g1301_1400/s1346_check_if_n_and_its_double_exist/Solution.java)| Easy | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 1 | 99.64 +| 0595 |[Big Countries](src/main/java/g0501_0600/s0595_big_countries/script.sql)| Easy | Database | 262 | 84.64 +| 1757 |[Recyclable and Low Fat Products](src/main/java/g1701_1800/s1757_recyclable_and_low_fat_products/script.sql)| Easy | Database | 475 | 71.54 +| 0584 |[Find Customer Referee](src/main/java/g0501_0600/s0584_find_customer_referee/script.sql)| Easy | Database | 531 | 58.63 +| 0183 |[Customers Who Never Order](src/main/java/g0101_0200/s0183_customers_who_never_order/script.sql)| Easy | Database | 376 | 98.73 -#### Day 10 +#### Day 2 Select and Order | | | | | | |-|-|-|-|-|- -| 0350 |[Intersection of Two Arrays II](src/main/java/g0301_0400/s0350_intersection_of_two_arrays_ii/Solution.java)| Easy | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 4 | 69.62 -| 0633 |[Sum of Square Numbers](src/main/java/g0601_0700/s0633_sum_of_square_numbers/Solution.java)| Medium | Math, Binary_Search, Two_Pointers | 4 | 82.92 +| 1873 |[Calculate Special Bonus](src/main/java/g1801_1900/s1873_calculate_special_bonus/script.sql)| Easy | Database | 543 | 71.60 +| 0627 |[Swap Salary](src/main/java/g0601_0700/s0627_swap_salary/script.sql)| Easy | Database | 191 | 96.89 +| 0196 |[Delete Duplicate Emails](src/main/java/g0101_0200/s0196_delete_duplicate_emails/script.sql)| Easy | Database | 903 | 48.10 -#### Day 11 +#### Day 3 String Processing Functions | | | | | | |-|-|-|-|-|- -| 1855 |[Maximum Distance Between a Pair of Values](src/main/java/g1801_1900/s1855_maximum_distance_between_a_pair_of_values/Solution.java)| Medium | Array, Greedy, Binary_Search, Two_Pointers | 4 | 62.20 -| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 1667 |[Fix Names in a Table](src/main/java/g1601_1700/s1667_fix_names_in_a_table/script.sql)| Easy | Database | 559 | 80.29 +| 1484 |[Group Sold Products By The Date](src/main/java/g1401_1500/s1484_group_sold_products_by_the_date/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 395 | 77.20 +| 1527 |[Patients With a Condition](src/main/java/g1501_1600/s1527_patients_with_a_condition/script.sql)| Easy | Database | 308 | 66.93 -#### Day 12 +#### Day 4 Union and Select | | | | | | |-|-|-|-|-|- -| 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 - -### Binary Search II +| 1965 |[Employees With Missing Information](src/main/java/g1901_2000/s1965_employees_with_missing_information/script.sql)| Easy | Database | 617 | 30.40 +| 1795 |[Rearrange Products Table](src/main/java/g1701_1800/s1795_rearrange_products_table/script.sql)| Easy | Database | 497 | 64.83 +| 0608 |[Tree Node](src/main/java/g0601_0700/s0608_tree_node/script.sql)| Medium | LeetCode_Curated_SQL_70, Database | 347 | 95.17 +| 0176 |[Second Highest Salary](src/main/java/g0101_0200/s0176_second_highest_salary/script.sql)| Medium | Database | 225 | 73.10 -#### Day 1 +#### Day 5 Union | | | | | | |-|-|-|-|-|- -| 0209 |[Minimum Size Subarray Sum](src/main/java/g0201_0300/s0209_minimum_size_subarray_sum/Solution.java)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 1 | 99.76 -| 0611 |[Valid Triangle Number](src/main/java/g0601_0700/s0611_valid_triangle_number/Solution.java)| Medium | Array, Sorting, Greedy, Binary_Search, Two_Pointers | 10 | 100.00 +| 0175 |[Combine Two Tables](src/main/java/g0101_0200/s0175_combine_two_tables/script.sql)| Easy | Database | 491 | 32.30 +| 1581 |[Customer Who Visited but Did Not Make Any Transactions](src/main/java/g1501_1600/s1581_customer_who_visited_but_did_not_make_any_transactions/script.sql)| Easy | Database | 1039 | 76.99 +| 1148 |[Article Views I](src/main/java/g1101_1200/s1148_article_views_i/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 783 | 64.09 -#### Day 2 +#### Day 6 Union | | | | | | |-|-|-|-|-|- -| 0658 |[Find K Closest Elements](src/main/java/g0601_0700/s0658_find_k_closest_elements/Solution.java)| Medium | Array, Sorting, Binary_Search, Two_Pointers, Heap_Priority_Queue | 3 | 99.20 -| 1894 |[Find the Student that Will Replace the Chalk](src/main/java/g1801_1900/s1894_find_the_student_that_will_replace_the_chalk/Solution.java)| Medium | Array, Binary_Search, Simulation, Prefix_Sum | 2 | 76.67 +| 0197 |[Rising Temperature](src/main/java/g0101_0200/s0197_rising_temperature/script.sql)| Easy | Database | 342 | 93.76 +| 0607 |[Sales Person](src/main/java/g0601_0700/s0607_sales_person/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 1046 | 86.04 -#### Day 3 +#### Day 7 Function | | | | | | |-|-|-|-|-|- -| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 -| 1760 |[Minimum Limit of Balls in a Bag](src/main/java/g1701_1800/s1760_minimum_limit_of_balls_in_a_bag/Solution.java)| Medium | Array, Binary_Search | 44 | 78.49 +| 1141 |[User Activity for the Past 30 Days I](src/main/java/g1101_1200/s1141_user_activity_for_the_past_30_days_i/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 849 | 72.54 +| 1693 |[Daily Leads and Partners](src/main/java/g1601_1700/s1693_daily_leads_and_partners/script.sql)| Easy | Database | 463 | 78.98 +| 1729 |[Find Followers Count](src/main/java/g1701_1800/s1729_find_followers_count/script.sql)| Easy | Database | 456 | 88.39 -#### Day 4 +#### Day 8 Function | | | | | | |-|-|-|-|-|- -| 0875 |[Koko Eating Bananas](src/main/java/g0801_0900/s0875_koko_eating_bananas/Solution.java)| Medium | Array, Binary_Search, LeetCode_75_Binary_Search | 15 | 91.32 -| 1552 |[Magnetic Force Between Two Balls](src/main/java/g1501_1600/s1552_magnetic_force_between_two_balls/Solution.java)| Medium | Array, Sorting, Binary_Search | 39 | 99.65 +| 0586 |[Customer Placing the Largest Number of Orders](src/main/java/g0501_0600/s0586_customer_placing_the_largest_number_of_orders/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 484 | 66.42 +| 0511 |[Game Play Analysis I](src/main/java/g0501_0600/s0511_game_play_analysis_i/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 586 | 56.94 +| 1890 |[The Latest Login in 2020](src/main/java/g1801_1900/s1890_the_latest_login_in_2020/script.sql)| Easy | Database | 571 | 73.59 +| 1741 |[Find Total Time Spent by Each Employee](src/main/java/g1701_1800/s1741_find_total_time_spent_by_each_employee/script.sql)| Easy | Database | 414 | 93.27 -#### Day 5 +#### Day 9 Control of Flow | | | | | | |-|-|-|-|-|- -| 0287 |[Find the Duplicate Number](src/main/java/g0201_0300/s0287_find_the_duplicate_number/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Two_Pointers, Bit_Manipulation, Big_O_Time_O(n)_Space_O(n) | 2 | 97.52 -| 1283 |[Find the Smallest Divisor Given a Threshold](src/main/java/g1201_1300/s1283_find_the_smallest_divisor_given_a_threshold/Solution.java)| Medium | Array, Binary_Search | 9 | 95.49 +| 1393 |[Capital Gain/Loss](src/main/java/g1301_1400/s1393_capital_gainloss/script.sql)| Medium | LeetCode_Curated_SQL_70, Database | 428 | 92.01 +| 1407 |[Top Travellers](src/main/java/g1401_1500/s1407_top_travellers/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 682 | 70.16 +| 1158 |[Market Analysis I](src/main/java/g1101_1200/s1158_market_analysis_i/script.sql)| Medium | Database | 2511 | 78.92 -#### Day 6 +#### Day 10 Where | | | | | | |-|-|-|-|-|- -| 1898 |[Maximum Number of Removable Characters](src/main/java/g1801_1900/s1898_maximum_number_of_removable_characters/Solution.java)| Medium | Array, String, Binary_Search | 121 | 72.51 -| 1870 |[Minimum Speed to Arrive on Time](src/main/java/g1801_1900/s1870_minimum_speed_to_arrive_on_time/Solution.java)| Medium | Array, Binary_Search | 86 | 88.58 +| 0182 |[Duplicate Emails](src/main/java/g0101_0200/s0182_duplicate_emails/script.sql)| Easy | Database | 303 | 92.08 +| 1050 |[Actors and Directors Who Cooperated At Least Three Times](src/main/java/g1001_1100/s1050_actors_and_directors_who_cooperated_at_least_three_times/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 344 | 76.48 +| 1587 |[Bank Account Summary II](src/main/java/g1501_1600/s1587_bank_account_summary_ii/script.sql)| Easy | Database | 630 | 60.32 +| 1084 |[Sales Analysis III](src/main/java/g1001_1100/s1084_sales_analysis_iii/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 1066 | 69.71 -#### Day 7 +### Level 1 + +#### Day 1 Prefix Sum | | | | | | |-|-|-|-|-|- -| 1482 |[Minimum Number of Days to Make m Bouquets](src/main/java/g1401_1500/s1482_minimum_number_of_days_to_make_m_bouquets/Solution.java)| Medium | Array, Binary_Search | 25 | 69.18 -| 1818 |[Minimum Absolute Sum Difference](src/main/java/g1801_1900/s1818_minimum_absolute_sum_difference/Solution.java)| Medium | Array, Sorting, Binary_Search, Ordered_Set | 13 | 99.44 +| 1480 |[Running Sum of 1d Array](src/main/java/g1401_1500/s1480_running_sum_of_1d_array/Solution.java)| Easy | Array, Prefix_Sum | 0 | 100.00 +| 0724 |[Find Pivot Index](src/main/java/g0701_0800/s0724_find_pivot_index/Solution.java)| Easy | Array, Prefix_Sum, LeetCode_75_Prefix_Sum | 2 | 69.67 -#### Day 8 +#### Day 2 String | | | | | | |-|-|-|-|-|- -| 0240 |[Search a 2D Matrix II](src/main/java/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Big_O_Time_O(n+m)_Space_O(1) | 5 | 99.92 -| 0275 |[H-Index II](src/main/java/g0201_0300/s0275_h_index_ii/Solution.java)| Medium | Array, Binary_Search | 0 | 100.00 +| 0205 |[Isomorphic Strings](src/main/java/g0201_0300/s0205_isomorphic_strings/Solution.java)| Easy | String, Hash_Table | 2 | 99.18 +| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 -#### Day 9 +#### Day 3 Linked List | | | | | | |-|-|-|-|-|- -| 1838 |[Frequency of the Most Frequent Element](src/main/java/g1801_1900/s1838_frequency_of_the_most_frequent_element/Solution.java)| Medium | Array, Sorting, Greedy, Binary_Search, Prefix_Sum, Sliding_Window | 11 | 100.00 -| 0540 |[Single Element in a Sorted Array](src/main/java/g0501_0600/s0540_single_element_in_a_sorted_array/Solution.java)| Medium | Array, Binary_Search | 0 | 100.00 +| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 +| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -#### Day 10 +#### Day 4 Linked List | | | | | | |-|-|-|-|-|- -| 0222 |[Count Complete Tree Nodes](src/main/java/g0201_0300/s0222_count_complete_tree_nodes/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Search, Binary_Tree | 0 | 100.00 -| 1712 |[Ways to Split Array Into Three Subarrays](src/main/java/g1701_1800/s1712_ways_to_split_array_into_three_subarrays/Solution.java)| Medium | Array, Binary_Search, Two_Pointers, Prefix_Sum | 16 | 84.24 +| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 +| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 -#### Day 11 +#### Day 5 Greedy | | | | | | |-|-|-|-|-|- -| 0826 |[Most Profit Assigning Work](src/main/java/g0801_0900/s0826_most_profit_assigning_work/Solution.java)| Medium | Array, Sorting, Greedy, Binary_Search, Two_Pointers | 21 | 83.83 -| 0436 |[Find Right Interval](src/main/java/g0401_0500/s0436_find_right_interval/Solution.java)| Medium | Array, Sorting, Binary_Search | 20 | 81.51 +| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 +| 0409 |[Longest Palindrome](src/main/java/g0401_0500/s0409_longest_palindrome/Solution.java)| Easy | String, Hash_Table, Greedy | 2 | 92.90 -#### Day 12 +#### Day 6 Tree | | | | | | |-|-|-|-|-|- -| 0081 |[Search in Rotated Sorted Array II](src/main/java/g0001_0100/s0081_search_in_rotated_sorted_array_ii/Solution.java)| Medium | Array, Binary_Search | 1 | 82.83 -| 0162 |[Find Peak Element](src/main/java/g0101_0200/s0162_find_peak_element/Solution.java)| Medium | Top_Interview_Questions, Array, Binary_Search, LeetCode_75_Binary_Search | 0 | 100.00 +| 0589 |[N-ary Tree Preorder Traversal](src/main/java/g0501_0600/s0589_n_ary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Stack | 1 | 90.98 +| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 -#### Day 13 +#### Day 7 Binary Search | | | | | | |-|-|-|-|-|- -| 0154 |[Find Minimum in Rotated Sorted Array II](src/main/java/g0101_0200/s0154_find_minimum_in_rotated_sorted_array_ii/Solution.java)| Hard | Array, Binary_Search | 1 | 77.09 -| 0528 |[Random Pick with Weight](src/main/java/g0501_0600/s0528_random_pick_with_weight/Solution.java)| Medium | Math, Binary_Search, Prefix_Sum, Randomized | 42 | 50.90 +| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 +| 0278 |[First Bad Version](src/main/java/g0201_0300/s0278_first_bad_version/Solution.java)| Easy | Binary_Search, Interactive | 15 | 87.89 -#### Day 14 +#### Day 8 Binary Search Tree | | | | | | |-|-|-|-|-|- -| 1508 |[Range Sum of Sorted Subarray Sums](src/main/java/g1501_1600/s1508_range_sum_of_sorted_subarray_sums/Solution.java)| Medium | Array, Sorting, Binary_Search, Two_Pointers | 60 | 93.84 -| 1574 |[Shortest Subarray to be Removed to Make Array Sorted](src/main/java/g1501_1600/s1574_shortest_subarray_to_be_removed_to_make_array_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers, Stack, Monotonic_Stack | 2 | 84.97 +| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 0235 |[Lowest Common Ancestor of a Binary Search Tree](src/main/java/g0201_0300/s0235_lowest_common_ancestor_of_a_binary_search_tree/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 4 | 100.00 -#### Day 15 +#### Day 9 Graph/BFS/DFS | | | | | | |-|-|-|-|-|- -| 1292 |[Maximum Side Length of a Square with Sum Less than or Equal to Threshold](src/main/java/g1201_1300/s1292_maximum_side_length_of_a_square_with_sum_less_than_or_equal_to_threshold/Solution.java)| Medium | Array, Binary_Search, Matrix, Prefix_Sum | 23 | 32.97 -| 1498 |[Number of Subsequences That Satisfy the Given Sum Condition](src/main/java/g1401_1500/s1498_number_of_subsequences_that_satisfy_the_given_sum_condition/Solution.java)| Medium | Array, Sorting, Binary_Search, Two_Pointers | 27 | 99.13 +| 0733 |[Flood Fill](src/main/java/g0701_0800/s0733_flood_fill/Solution.java)| Easy | Array, Depth_First_Search, Breadth_First_Search, Matrix | 1 | 85.36 +| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 -#### Day 16 +#### Day 10 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0981 |[Time Based Key-Value Store](src/main/java/g0901_1000/s0981_time_based_key_value_store/TimeMap.java)| Medium | String, Hash_Table, Binary_Search, Design | 239 | 72.78 -| 1300 |[Sum of Mutated Array Closest to Target](src/main/java/g1201_1300/s1300_sum_of_mutated_array_closest_to_target/Solution.java)| Medium | Array, Sorting, Binary_Search | 7 | 33.33 +| 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 +| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -#### Day 17 +#### Day 11 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 1802 |[Maximum Value at a Given Index in a Bounded Array](src/main/java/g1801_1900/s1802_maximum_value_at_a_given_index_in_a_bounded_array/Solution.java)| Medium | Greedy, Binary_Search | 2 | 58.44 -| 1901 |[Find a Peak Element II](src/main/java/g1901_2000/s1901_find_a_peak_element_ii/Solution.java)| Medium | Array, Binary_Search, Matrix, Divide_and_Conquer | 0 | 100.00 +| 0746 |[Min Cost Climbing Stairs](src/main/java/g0701_0800/s0746_min_cost_climbing_stairs/Solution.java)| Easy | Array, Dynamic_Programming, LeetCode_75_DP/1D | 1 | 86.38 +| 0062 |[Unique Paths](src/main/java/g0001_0100/s0062_unique_paths/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Combinatorics, LeetCode_75_DP/Multidimensional, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 -#### Day 18 +#### Day 12 Sliding Window/Two Pointer | | | | | | |-|-|-|-|-|- -| 1146 |[Snapshot Array](src/main/java/g1101_1200/s1146_snapshot_array/SnapshotArray.java)| Medium | Array, Hash_Table, Binary_Search, Design | 68 | 45.86 -| 1488 |[Avoid Flood in The City](src/main/java/g1401_1500/s1488_avoid_flood_in_the_city/Solution.java)| Medium | Array, Hash_Table, Greedy, Binary_Search, Heap_Priority_Queue | 82 | 75.08 +| 0438 |[Find All Anagrams in a String](src/main/java/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 3 | 99.83 +| 0424 |[Longest Repeating Character Replacement](src/main/java/g0401_0500/s0424_longest_repeating_character_replacement/Solution.java)| Medium | String, Hash_Table, Sliding_Window | 5 | 95.15 -#### Day 19 +#### Day 13 Hashmap | | | | | | |-|-|-|-|-|- -| 1562 |[Find Latest Group of Size M](src/main/java/g1501_1600/s1562_find_latest_group_of_size_m/Solution.java)| Medium | Array, Binary_Search, Simulation | 8 | 90.00 -| 1648 |[Sell Diminishing-Valued Colored Balls](src/main/java/g1601_1700/s1648_sell_diminishing_valued_colored_balls/Solution.java)| Medium | Array, Math, Sorting, Greedy, Binary_Search, Heap_Priority_Queue | 27 | 80.64 +| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 +| 0299 |[Bulls and Cows](src/main/java/g0201_0300/s0299_bulls_and_cows/Solution.java)| Medium | String, Hash_Table, Counting | 6 | 86.69 -#### Day 20 +#### Day 14 Stack | | | | | | |-|-|-|-|-|- -| 1201 |[Ugly Number III](src/main/java/g1201_1300/s1201_ugly_number_iii/Solution.java)| Medium | Math, Binary_Search, Number_Theory | 0 | 100.00 -| 0911 |[Online Election](src/main/java/g0901_1000/s0911_online_election/TopVotedCandidate.java)| Medium | Array, Hash_Table, Binary_Search, Design | 63 | 98.81 - -### Dynamic Programming I +| 0844 |[Backspace String Compare](src/main/java/g0801_0900/s0844_backspace_string_compare/Solution.java)| Easy | String, Two_Pointers, Stack, Simulation | 0 | 100.00 +| 0394 |[Decode String](src/main/java/g0301_0400/s0394_decode_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, LeetCode_75_Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -#### Day 1 +#### Day 15 Heap | | | | | | |-|-|-|-|-|- -| 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 -| 1137 |[N-th Tribonacci Number](src/main/java/g1101_1200/s1137_n_th_tribonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Memoization, LeetCode_75_DP/1D | 0 | 100.00 +| 1046 |[Last Stone Weight](src/main/java/g1001_1100/s1046_last_stone_weight/Solution.java)| Easy | Array, Heap_Priority_Queue | 2 | 73.81 +| 0692 |[Top K Frequent Words](src/main/java/g0601_0700/s0692_top_k_frequent_words/Solution.java)| Medium | String, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Trie, Bucket_Sort | 11 | 38.54 -#### Day 2 +### Level 2 + +#### Day 1 Implementation/Simulation | | | | | | |-|-|-|-|-|- -| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0746 |[Min Cost Climbing Stairs](src/main/java/g0701_0800/s0746_min_cost_climbing_stairs/Solution.java)| Easy | Array, Dynamic_Programming, LeetCode_75_DP/1D | 1 | 86.38 +| 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 +| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 +| 1706 |[Where Will the Ball Fall](src/main/java/g1701_1800/s1706_where_will_the_ball_fall/Solution.java)| Medium | Array, Dynamic_Programming, Depth_First_Search, Matrix, Simulation | 2 | 64.55 -#### Day 3 +#### Day 2 String | | | | | | |-|-|-|-|-|- -| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -| 0740 |[Delete and Earn](src/main/java/g0701_0800/s0740_delete_and_earn/Solution.java)| Medium | Array, Hash_Table, Dynamic_Programming | 4 | 77.68 +| 0014 |[Longest Common Prefix](src/main/java/g0001_0100/s0014_longest_common_prefix/Solution.java)| Easy | Top_Interview_Questions, String, Big_O_Time_O(n\*m)_Space_O(m) | 0 | 100.00 +| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 -#### Day 4 +#### Day 3 Linked List | | | | | | |-|-|-|-|-|- -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 -| 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0019 |[Remove Nth Node From End of List](src/main/java/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Two_Pointers, Linked_List, Big_O_Time_O(L)_Space_O(L) | 0 | 100.00 +| 0234 |[Palindrome Linked List](src/main/java/g0201_0300/s0234_palindrome_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Two_Pointers, Stack, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 4 | 84.46 -#### Day 5 +#### Day 4 Linked List | | | | | | |-|-|-|-|-|- -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 -| 0918 |[Maximum Sum Circular Subarray](src/main/java/g0901_1000/s0918_maximum_sum_circular_subarray/Solution.java)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue | 2 | 99.34 +| 0328 |[Odd Even Linked List](src/main/java/g0301_0400/s0328_odd_even_linked_list/Solution.java)| Medium | Linked_List, LeetCode_75_LinkedList | 0 | 100.00 +| 0148 |[Sort List](src/main/java/g0101_0200/s0148_sort_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Sorting, Two_Pointers, Linked_List, Divide_and_Conquer, Merge_Sort, Big_O_Time_O(log(N))_Space_O(log(N)) | 9 | 93.90 -#### Day 6 +#### Day 5 Greedy | | | | | | |-|-|-|-|-|- -| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 92.74 -| 1567 |[Maximum Length of Subarray With Positive Product](src/main/java/g1501_1600/s1567_maximum_length_of_subarray_with_positive_product/Solution.java)| Medium | Array, Dynamic_Programming, Greedy | 4 | 80.86 +| 2131 |[Longest Palindrome by Concatenating Two Letter Words](src/main/java/g2101_2200/s2131_longest_palindrome_by_concatenating_two_letter_words/Solution.java)| Medium | Array, String, Hash_Table, Greedy, Counting | 73 | 76.60 +| 0621 |[Task Scheduler](src/main/java/g0601_0700/s0621_task_scheduler/Solution.java)| Medium | Array, Hash_Table, Sorting, Greedy, Heap_Priority_Queue, Counting | 3 | 84.32 -#### Day 7 +#### Day 6 Tree | | | | | | |-|-|-|-|-|- -| 1014 |[Best Sightseeing Pair](src/main/java/g1001_1100/s1014_best_sightseeing_pair/Solution.java)| Medium | Array, Dynamic_Programming | 2 | 99.86 -| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 -| 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 76.91 +| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0110 |[Balanced Binary Tree](src/main/java/g0101_0200/s0110_balanced_binary_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree | 1 | 98.82 -#### Day 8 +#### Day 7 Tree | | | | | | |-|-|-|-|-|- -| 0309 |[Best Time to Buy and Sell Stock with Cooldown](src/main/java/g0301_0400/s0309_best_time_to_buy_and_sell_stock_with_cooldown/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -| 0714 |[Best Time to Buy and Sell Stock with Transaction Fee](src/main/java/g0701_0800/s0714_best_time_to_buy_and_sell_stock_with_transaction_fee/Solution.java)| Medium | Array, Dynamic_Programming, Greedy, LeetCode_75_DP/Multidimensional | 4 | 78.57 +| 0543 |[Diameter of Binary Tree](src/main/java/g0501_0600/s0543_diameter_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0437 |[Path Sum III](src/main/java/g0401_0500/s0437_path_sum_iii/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 2 | 100.00 -#### Day 9 +#### Day 8 Binary Search | | | | | | |-|-|-|-|-|- -| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 -| 0042 |[Trapping Rain Water](src/main/java/g0001_0100/s0042_trapping_rain_water/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Two_Pointers, Stack, Monotonic_Stack, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 +| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 -#### Day 10 +#### Day 9 Binary Search Tree | | | | | | |-|-|-|-|-|- -| 0413 |[Arithmetic Slices](src/main/java/g0401_0500/s0413_arithmetic_slices/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -| 0091 |[Decode Ways](src/main/java/g0001_0100/s0091_decode_ways/Solution.java)| Medium | Top_Interview_Questions, String, Dynamic_Programming | 2 | 66.37 +| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 +| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 -#### Day 11 +#### Day 10 Graph/BFS/DFS | | | | | | |-|-|-|-|-|- -| 0264 |[Ugly Number II](src/main/java/g0201_0300/s0264_ugly_number_ii/Solution.java)| Medium | Hash_Table, Dynamic_Programming, Math, Heap_Priority_Queue | 2 | 99.91 -| 0096 |[Unique Binary Search Trees](src/main/java/g0001_0100/s0096_unique_binary_search_trees/Solution.java)| Medium | Dynamic_Programming, Math, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0994 |[Rotting Oranges](src/main/java/g0901_1000/s0994_rotting_oranges/Solution.java)| Medium | Top_100_Liked_Questions, Array, Breadth_First_Search, Matrix, LeetCode_75_Graphs/BFS | 3 | 74.27 +| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 5 | 92.62 -#### Day 12 +#### Day 11 Graph/BFS/DFS | | | | | | |-|-|-|-|-|- -| 0118 |[Pascal's Triangle](src/main/java/g0101_0200/s0118_pascals_triangle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 1 | 67.08 -| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 +| 0210 |[Course Schedule II](src/main/java/g0201_0300/s0210_course_schedule_ii/Solution.java)| Medium | Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort | 4 | 91.07 +| 0815 |[Bus Routes](src/main/java/g0801_0900/s0815_bus_routes/Solution.java)| Hard | Array, Hash_Table, Breadth_First_Search | 49 | 89.11 -#### Day 13 +#### Day 12 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0931 |[Minimum Falling Path Sum](src/main/java/g0901_1000/s0931_minimum_falling_path_sum/Solution.java)| Medium | Array, Dynamic_Programming, Matrix | 4 | 72.19 -| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 +| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 -#### Day 14 +#### Day 13 Dynamic Programming | | | | | | |-|-|-|-|-|- -| 1314 |[Matrix Block Sum](src/main/java/g1301_1400/s1314_matrix_block_sum/Solution.java)| Medium | Array, Matrix, Prefix_Sum | 5 | 67.46 -| 0304 |[Range Sum Query 2D - Immutable](src/main/java/g0301_0400/s0304_range_sum_query_2d_immutable/NumMatrix.java)| Medium | Array, Matrix, Design, Prefix_Sum | 153 | 87.51 +| 0416 |[Partition Equal Subset Sum](src/main/java/g0401_0500/s0416_partition_equal_subset_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Big_O_Time_O(n\*sums)_Space_O(n\*sums) | 5 | 99.88 +| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 92.74 -#### Day 15 +#### Day 14 Sliding Window/Two Pointer | | | | | | |-|-|-|-|-|- -| 0062 |[Unique Paths](src/main/java/g0001_0100/s0062_unique_paths/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Combinatorics, LeetCode_75_DP/Multidimensional, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 -| 0063 |[Unique Paths II](src/main/java/g0001_0100/s0063_unique_paths_ii/Solution.java)| Medium | Array, Dynamic_Programming, Matrix | 0 | 100.00 +| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 +| 0016 |[3Sum Closest](src/main/java/g0001_0100/s0016_3sum_closest/Solution.java)| Medium | Array, Sorting, Two_Pointers | 4 | 98.21 +| 0076 |[Minimum Window Substring](src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 2 | 99.83 -#### Day 16 +#### Day 15 Tree | | | | | | |-|-|-|-|-|- -| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 -| 0221 |[Maximal Square](src/main/java/g0201_0300/s0221_maximal_square/Solution.java)| Medium | Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 6 | 97.07 +| 0100 |[Same Tree](src/main/java/g0001_0100/s0100_same_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0101 |[Symmetric Tree](src/main/java/g0101_0200/s0101_symmetric_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 -#### Day 17 +#### Day 16 Design | | | | | | |-|-|-|-|-|- -| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 -| 0516 |[Longest Palindromic Subsequence](src/main/java/g0501_0600/s0516_longest_palindromic_subsequence/Solution.java)| Medium | String, Dynamic_Programming | 88 | 58.87 +| 0232 |[Implement Queue using Stacks](src/main/java/g0201_0300/s0232_implement_queue_using_stacks/MyQueue.java)| Easy | Stack, Design, Queue | 1 | 67.21 +| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 +| 0208 |[Implement Trie (Prefix Tree)](src/main/java/g0201_0300/s0208_implement_trie_prefix_tree/Trie.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, LeetCode_75_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 32 | 95.05 -#### Day 18 +#### Day 17 Interval | | | | | | |-|-|-|-|-|- -| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 -| 0376 |[Wiggle Subsequence](src/main/java/g0301_0400/s0376_wiggle_subsequence/Solution.java)| Medium | Array, Dynamic_Programming, Greedy | 0 | 100.00 +| 0057 |[Insert Interval](src/main/java/g0001_0100/s0057_insert_interval/Solution.java)| Medium | Array | 0 | 100.00 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 -#### Day 19 +#### Day 18 Stack | | | | | | |-|-|-|-|-|- -| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 -| 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n\*m)_Space_O(n\*m) | 19 | 89.05 -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 +| 0735 |[Asteroid Collision](src/main/java/g0701_0800/s0735_asteroid_collision/Solution.java)| Medium | Array, Stack, LeetCode_75_Stack | 2 | 99.59 +| 0227 |[Basic Calculator II](src/main/java/g0201_0300/s0227_basic_calculator_ii/Solution.java)| Medium | String, Math, Stack | 8 | 95.32 -#### Day 20 +#### Day 19 Union Find | | | | | | |-|-|-|-|-|- -| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 -| 0518 |[Coin Change 2](src/main/java/g0501_0600/s0518_coin_change_2/Solution.java)| Medium | Array, Dynamic_Programming | 4 | 84.67 +| 0547 |[Number of Provinces](src/main/java/g0501_0600/s0547_number_of_provinces/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find, LeetCode_75_Graphs/DFS | 2 | 69.51 +| 0947 |[Most Stones Removed with Same Row or Column](src/main/java/g0901_1000/s0947_most_stones_removed_with_same_row_or_column/Solution.java)| Medium | Depth_First_Search, Graph, Union_Find | 7 | 98.83 -#### Day 21 +#### Day 20 Brute Force/Backtracking | | | | | | |-|-|-|-|-|- -| 0377 |[Combination Sum IV](src/main/java/g0301_0400/s0377_combination_sum_iv/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 92.54 -| 0343 |[Integer Break](src/main/java/g0301_0400/s0343_integer_break/Solution.java)| Medium | Dynamic_Programming, Math | 0 | 100.00 -| 0279 |[Perfect Squares](src/main/java/g0201_0300/s0279_perfect_squares/Solution.java)| Medium | Top_100_Liked_Questions, Dynamic_Programming, Math, Breadth_First_Search | 1 | 100.00 +| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 +| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 -### Programming Skills I +### Udemy -#### Day 1 Basic Data Type +#### Udemy Integers | | | | | | |-|-|-|-|-|- -| 1523 |[Count Odd Numbers in an Interval Range](src/main/java/g1501_1600/s1523_count_odd_numbers_in_an_interval_range/Solution.java)| Easy | Math | 0 | 100.00 -| 1491 |[Average Salary Excluding the Minimum and Maximum Salary](src/main/java/g1401_1500/s1491_average_salary_excluding_the_minimum_and_maximum_salary/Solution.java)| Easy | Array, Sorting | 0 | 100.00 +| 0412 |[Fizz Buzz](src/main/java/g0401_0500/s0412_fizz_buzz/Solution.java)| Easy | String, Math, Simulation | 1 | 100.00 +| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 +| 0007 |[Reverse Integer](src/main/java/g0001_0100/s0007_reverse_integer/Solution.java)| Medium | Top_Interview_Questions, Math, Big_O_Time_O(log10(x))_Space_O(1) | 0 | 100.00 +| 0009 |[Palindrome Number](src/main/java/g0001_0100/s0009_palindrome_number/Solution.java)| Easy | Math, Big_O_Time_O(log10(x))_Space_O(1) | 4 | 100.00 +| 0172 |[Factorial Trailing Zeroes](src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java)| Medium | Top_Interview_Questions, Math | 0 | 100.00 +| 0050 |[Pow(x, n)](src/main/java/g0001_0100/s0050_powx_n/Solution.java)| Medium | Top_Interview_Questions, Math, Recursion | 0 | 100.00 -#### Day 2 Operator +#### Udemy Strings | | | | | | |-|-|-|-|-|- -| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 -| 1281 |[Subtract the Product and Sum of Digits of an Integer](src/main/java/g1201_1300/s1281_subtract_the_product_and_sum_of_digits_of_an_integer/Solution.java)| Easy | Math | 0 | 100.00 +| 0344 |[Reverse String](src/main/java/g0301_0400/s0344_reverse_string/Solution.java)| Easy | String, Two_Pointers, Recursion | 1 | 99.91 +| 0014 |[Longest Common Prefix](src/main/java/g0001_0100/s0014_longest_common_prefix/Solution.java)| Easy | Top_Interview_Questions, String, Big_O_Time_O(n\*m)_Space_O(m) | 0 | 100.00 +| 0187 |[Repeated DNA Sequences](src/main/java/g0101_0200/s0187_repeated_dna_sequences/Solution.java)| Medium | String, Hash_Table, Bit_Manipulation, Sliding_Window, Hash_Function, Rolling_Hash | 29 | 77.11 +| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 +| 0020 |[Valid Parentheses](src/main/java/g0001_0100/s0020_valid_parentheses/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 2 | 97.19 +| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 +| 0394 |[Decode String](src/main/java/g0301_0400/s0394_decode_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, LeetCode_75_Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 +| 0151 |[Reverse Words in a String](src/main/java/g0101_0200/s0151_reverse_words_in_a_string/Solution.java)| Medium | String, Two_Pointers, LeetCode_75_Array/String | 2 | 99.69 +| 0273 |[Integer to English Words](src/main/java/g0201_0300/s0273_integer_to_english_words/Solution.java)| Hard | String, Math, Recursion | 3 | 95.67 -#### Day 3 Conditional Statements +#### Udemy Binary Search | | | | | | |-|-|-|-|-|- -| 0976 |[Largest Perimeter Triangle](src/main/java/g0901_1000/s0976_largest_perimeter_triangle/Solution.java)| Easy | Array, Math, Sorting, Greedy | 7 | 99.33 -| 1779 |[Find Nearest Point That Has the Same X or Y Coordinate](src/main/java/g1701_1800/s1779_find_nearest_point_that_has_the_same_x_or_y_coordinate/Solution.java)| Easy | Array | 1 | 100.00 +| 0704 |[Binary Search](src/main/java/g0701_0800/s0704_binary_search/Solution.java)| Easy | Array, Binary_Search | 0 | 100.00 +| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 -#### Day 4 Loop +#### Udemy Arrays | | | | | | |-|-|-|-|-|- -| 1822 |[Sign of the Product of an Array](src/main/java/g1801_1900/s1822_sign_of_the_product_of_an_array/Solution.java)| Easy | Array, Math | 1 | 58.05 -| 1502 |[Can Make Arithmetic Progression From Sequence](src/main/java/g1501_1600/s1502_can_make_arithmetic_progression_from_sequence/Solution.java)| Easy | Array, Sorting | 2 | 90.55 -| 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 -| 1790 |[Check if One String Swap Can Make Strings Equal](src/main/java/g1701_1800/s1790_check_if_one_string_swap_can_make_strings_equal/Solution.java)| Easy | String, Hash_Table, Counting | 0 | 100.00 +| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 +| 0283 |[Move Zeroes](src/main/java/g0201_0300/s0283_move_zeroes/Solution.java)| Easy | Top_100_Liked_Questions, Array, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 83.99 +| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 +| 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 +| 0058 |[Length of Last Word](src/main/java/g0001_0100/s0058_length_of_last_word/Solution.java)| Easy | String | 0 | 100.00 +| 0605 |[Can Place Flowers](src/main/java/g0601_0700/s0605_can_place_flowers/Solution.java)| Easy | Array, Greedy, LeetCode_75_Array/String | 1 | 96.77 +| 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 76.91 +| 0080 |[Remove Duplicates from Sorted Array II](src/main/java/g0001_0100/s0080_remove_duplicates_from_sorted_array_ii/Solution.java)| Medium | Array, Two_Pointers | 0 | 100.00 +| 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 +| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 +| 1291 |[Sequential Digits](src/main/java/g1201_1300/s1291_sequential_digits/Solution.java)| Medium | Enumeration | 0 | 100.00 +| 0448 |[Find All Numbers Disappeared in an Array](src/main/java/g0401_0500/s0448_find_all_numbers_disappeared_in_an_array/Solution.java)| Easy | Array, Hash_Table | 3 | 100.00 +| 0442 |[Find All Duplicates in an Array](src/main/java/g0401_0500/s0442_find_all_duplicates_in_an_array/Solution.java)| Medium | Array, Hash_Table | 5 | 98.83 +| 0041 |[First Missing Positive](src/main/java/g0001_0100/s0041_first_missing_positive/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n) | 1 | 100.00 +| 0697 |[Degree of an Array](src/main/java/g0601_0700/s0697_degree_of_an_array/Solution.java)| Easy | Array, Hash_Table | 14 | 93.19 +| 0532 |[K-diff Pairs in an Array](src/main/java/g0501_0600/s0532_k_diff_pairs_in_an_array/Solution.java)| Medium | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 13 | 58.23 +| 0713 |[Subarray Product Less Than K](src/main/java/g0701_0800/s0713_subarray_product_less_than_k/Solution.java)| Medium | Array, Sliding_Window | 8 | 39.00 +| 1007 |[Minimum Domino Rotations For Equal Row](src/main/java/g1001_1100/s1007_minimum_domino_rotations_for_equal_row/Solution.java)| Medium | Array, Greedy | 5 | 79.64 +| 1306 |[Jump Game III](src/main/java/g1301_1400/s1306_jump_game_iii/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search | 2 | 96.23 +| 0456 |[132 Pattern](src/main/java/g0401_0500/s0456_132_pattern/Solution.java)| Medium | Array, Binary_Search, Stack, Ordered_Set, Monotonic_Stack | 16 | 82.41 +| 0239 |[Sliding Window Maximum](src/main/java/g0201_0300/s0239_sliding_window_maximum/Solution.java)| Hard | Top_100_Liked_Questions, Array, Heap_Priority_Queue, Sliding_Window, Queue, Monotonic_Queue, Big_O_Time_O(n\*k)_Space_O(n+k) | 26 | 95.89 -#### Day 5 Function +#### Udemy Two Pointers | | | | | | |-|-|-|-|-|- -| 0589 |[N-ary Tree Preorder Traversal](src/main/java/g0501_0600/s0589_n_ary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Stack | 1 | 90.98 -| 0496 |[Next Greater Element I](src/main/java/g0401_0500/s0496_next_greater_element_i/Solution.java)| Easy | Array, Hash_Table, Stack, Monotonic_Stack | 4 | 81.18 -| 1232 |[Check If It Is a Straight Line](src/main/java/g1201_1300/s1232_check_if_it_is_a_straight_line/Solution.java)| Easy | Array, Math, Geometry | 0 | 100.00 +| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 +| 0125 |[Valid Palindrome](src/main/java/g0101_0200/s0125_valid_palindrome/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers | 2 | 99.11 +| 0977 |[Squares of a Sorted Array](src/main/java/g0901_1000/s0977_squares_of_a_sorted_array/Solution.java)| Easy | Array, Sorting, Two_Pointers | 1 | 100.00 +| 0026 |[Remove Duplicates from Sorted Array](src/main/java/g0001_0100/s0026_remove_duplicates_from_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Two_Pointers | 0 | 100.00 +| 0042 |[Trapping Rain Water](src/main/java/g0001_0100/s0042_trapping_rain_water/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Two_Pointers, Stack, Monotonic_Stack, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 -#### Day 6 Array +#### Udemy Famous Algorithm | | | | | | |-|-|-|-|-|- -| 1588 |[Sum of All Odd Length Subarrays](src/main/java/g1501_1600/s1588_sum_of_all_odd_length_subarrays/Solution.java)| Easy | Array, Math, Prefix_Sum | 0 | 100.00 -| 0283 |[Move Zeroes](src/main/java/g0201_0300/s0283_move_zeroes/Solution.java)| Easy | Top_100_Liked_Questions, Array, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 83.99 -| 1672 |[Richest Customer Wealth](src/main/java/g1601_1700/s1672_richest_customer_wealth/Solution.java)| Easy | Array, Matrix | 0 | 100.00 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 +| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 -#### Day 7 Array +#### Udemy Sorting Algorithms | | | | | | |-|-|-|-|-|- -| 1572 |[Matrix Diagonal Sum](src/main/java/g1501_1600/s1572_matrix_diagonal_sum/Solution.java)| Easy | Array, Matrix | 0 | 100.00 -| 0566 |[Reshape the Matrix](src/main/java/g0501_0600/s0566_reshape_the_matrix/Solution.java)| Easy | Array, Matrix, Simulation | 1 | 90.08 +| 0912 |[Sort an Array](src/main/java/g0901_1000/s0912_sort_an_array/Solution.java)| Medium | Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Merge_Sort, Bucket_Sort, Counting_Sort, Radix_Sort | 25 | 38.15 -#### Day 8 String +#### Udemy 2D Arrays/Matrix | | | | | | |-|-|-|-|-|- -| 1768 |[Merge Strings Alternately](src/main/java/g1701_1800/s1768_merge_strings_alternately/Solution.java)| Easy | String, Two_Pointers, LeetCode_75_Array/String | 1 | 86.26 -| 1678 |[Goal Parser Interpretation](src/main/java/g1601_1700/s1678_goal_parser_interpretation/Solution.java)| Easy | String | 0 | 100.00 -| 0389 |[Find the Difference](src/main/java/g0301_0400/s0389_find_the_difference/Solution.java)| Easy | String, Hash_Table, Sorting, Bit_Manipulation | 1 | 100.00 +| 0304 |[Range Sum Query 2D - Immutable](src/main/java/g0301_0400/s0304_range_sum_query_2d_immutable/NumMatrix.java)| Medium | Array, Matrix, Design, Prefix_Sum | 153 | 87.51 +| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 +| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 +| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 +| 1572 |[Matrix Diagonal Sum](src/main/java/g1501_1600/s1572_matrix_diagonal_sum/Solution.java)| Easy | Array, Matrix | 0 | 100.00 +| 0073 |[Set Matrix Zeroes](src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Matrix, Big_O_Time_O(m\*n)_Space_O(1) | 0 | 100.00 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 -#### Day 9 String +#### Udemy Linked List | | | | | | |-|-|-|-|-|- -| 0709 |[To Lower Case](src/main/java/g0701_0800/s0709_to_lower_case/Solution.java)| Easy | String | 1 | 71.74 -| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping/Solution.java)| Easy | String | 0 | 100.00 -| 0953 |[Verifying an Alien Dictionary](src/main/java/g0901_1000/s0953_verifying_an_alien_dictionary/Solution.java)| Easy | Array, String, Hash_Table | 0 | 100.00 +| 0114 |[Flatten Binary Tree to Linked List](src/main/java/g0101_0200/s0114_flatten_binary_tree_to_linked_list/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 +| 0445 |[Add Two Numbers II](src/main/java/g0401_0500/s0445_add_two_numbers_ii/Solution.java)| Medium | Math, Stack, Linked_List | 3 | 90.38 +| 0328 |[Odd Even Linked List](src/main/java/g0301_0400/s0328_odd_even_linked_list/Solution.java)| Medium | Linked_List, LeetCode_75_LinkedList | 0 | 100.00 +| 0061 |[Rotate List](src/main/java/g0001_0100/s0061_rotate_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0024 |[Swap Nodes in Pairs](src/main/java/g0001_0100/s0024_swap_nodes_in_pairs/Solution.java)| Medium | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 +| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0141 |[Linked List Cycle](src/main/java/g0101_0200/s0141_linked_list_cycle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 +| 0160 |[Intersection of Two Linked Lists](src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(M+N)_Space_O(1) | 1 | 99.92 +| 0234 |[Palindrome Linked List](src/main/java/g0201_0300/s0234_palindrome_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Two_Pointers, Stack, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 4 | 84.46 +| 0138 |[Copy List with Random Pointer](src/main/java/g0101_0200/s0138_copy_list_with_random_pointer/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 +| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 +| 0146 |[LRU Cache](src/main/java/g0101_0200/s0146_lru_cache/LRUCache.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Design, Linked_List, Doubly_Linked_List, Big_O_Time_O(1)_Space_O(capacity) | 40 | 98.20 +| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 -#### Day 10 Linked List and Tree +#### Udemy Tree Stack Queue | | | | | | |-|-|-|-|-|- -| 1290 |[Convert Binary Number in a Linked List to Integer](src/main/java/g1201_1300/s1290_convert_binary_number_in_a_linked_list_to_integer/Solution.java)| Easy | Math, Linked_List | 0 | 100.00 -| 0876 |[Middle of the Linked List](src/main/java/g0801_0900/s0876_middle_of_the_linked_list/Solution.java)| Easy | Two_Pointers, Linked_List | 0 | 100.00 +| 0144 |[Binary Tree Preorder Traversal](src/main/java/g0101_0200/s0144_binary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 48.38 +| 0094 |[Binary Tree Inorder Traversal](src/main/java/g0001_0100/s0094_binary_tree_inorder_traversal/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0145 |[Binary Tree Postorder Traversal](src/main/java/g0101_0200/s0145_binary_tree_postorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 49.11 +| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 +| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 +| 1008 |[Construct Binary Search Tree from Preorder Traversal](src/main/java/g1001_1100/s1008_construct_binary_search_tree_from_preorder_traversal/Solution.java)| Medium | Array, Tree, Binary_Tree, Stack, Monotonic_Stack, Binary_Search_Tree | 0 | 100.00 +| 0543 |[Diameter of Binary Tree](src/main/java/g0501_0600/s0543_diameter_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0938 |[Range Sum of BST](src/main/java/g0901_1000/s0938_range_sum_of_bst/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 +| 0100 |[Same Tree](src/main/java/g0001_0100/s0100_same_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0111 |[Minimum Depth of Binary Tree](src/main/java/g0101_0200/s0111_minimum_depth_of_binary_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 1 | 97.49 | 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 -| 0404 |[Sum of Left Leaves](src/main/java/g0401_0500/s0404_sum_of_left_leaves/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 1 | 29.26 +| 0110 |[Balanced Binary Tree](src/main/java/g0101_0200/s0110_balanced_binary_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree | 1 | 98.82 +| 0701 |[Insert into a Binary Search Tree](src/main/java/g0701_0800/s0701_insert_into_a_binary_search_tree/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 +| 0297 |[Serialize and Deserialize Binary Tree](src/main/java/g0201_0300/s0297_serialize_and_deserialize_binary_tree/Codec.java)| Hard | String, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Design | 7 | 98.13 +| 0124 |[Binary Tree Maximum Path Sum](src/main/java/g0101_0200/s0124_binary_tree_maximum_path_sum/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 +| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 0337 |[House Robber III](src/main/java/g0301_0400/s0337_house_robber_iii/Solution.java)| Medium | Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree | 1 | 91.77 +| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 +| 0968 |[Binary Tree Cameras](src/main/java/g0901_1000/s0968_binary_tree_cameras/Solution.java)| Hard | Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree | 0 | 100.00 -#### Day 11 Containers and Libraries +#### Udemy Trie and Heap | | | | | | |-|-|-|-|-|- -| 1356 |[Sort Integers by The Number of 1 Bits](src/main/java/g1301_1400/s1356_sort_integers_by_the_number_of_1_bits/Solution.java)| Easy | Array, Sorting, Bit_Manipulation, Counting | 10 | 65.50 -| 0232 |[Implement Queue using Stacks](src/main/java/g0201_0300/s0232_implement_queue_using_stacks/MyQueue.java)| Easy | Stack, Design, Queue | 1 | 67.21 -| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 -| 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 +| 0208 |[Implement Trie (Prefix Tree)](src/main/java/g0201_0300/s0208_implement_trie_prefix_tree/Trie.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, LeetCode_75_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 32 | 95.05 +| 0745 |[Prefix and Suffix Search](src/main/java/g0701_0800/s0745_prefix_and_suffix_search/WordFilter.java)| Hard | String, Design, Trie | 366 | 76.15 -#### Day 12 Class and Object +#### Udemy Graph | | | | | | |-|-|-|-|-|- -| 1603 |[Design Parking System](src/main/java/g1601_1700/s1603_design_parking_system/ParkingSystem.java)| Easy | Design, Simulation, Counting | 8 | 76.16 -| 0303 |[Range Sum Query - Immutable](src/main/java/g0301_0400/s0303_range_sum_query_immutable/NumArray.java)| Easy | Array, Design, Prefix_Sum | 7 | 100.00 - -### Programming Skills II +| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 +| 0133 |[Clone Graph](src/main/java/g0101_0200/s0133_clone_graph/Solution.java)| Medium | Hash_Table, Depth_First_Search, Breadth_First_Search, Graph | 25 | 68.87 +| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 5 | 92.62 -#### Day 1 +#### Udemy Dynamic Programming | | | | | | |-|-|-|-|-|- -| 0896 |[Monotonic Array](src/main/java/g0801_0900/s0896_monotonic_array/Solution.java)| Easy | Array | 2 | 86.21 -| 0028 |[Find the Index of the First Occurrence in a String](src/main/java/g0001_0100/s0028_find_the_index_of_the_first_occurrence_in_a_string/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers, String_Matching | 0 | 100.00 +| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 +| 0118 |[Pascal's Triangle](src/main/java/g0101_0200/s0118_pascals_triangle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 1 | 67.08 +| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 +| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 +| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 92.74 +| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 +| 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 +| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 +| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 +| 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n\*m)_Space_O(n\*m) | 19 | 89.05 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 +| 0044 |[Wildcard Matching](src/main/java/g0001_0100/s0044_wildcard_matching/Solution.java)| Hard | Top_Interview_Questions, String, Dynamic_Programming, Greedy, Recursion | 2 | 99.87 +| 0010 |[Regular Expression Matching](src/main/java/g0001_0100/s0010_regular_expression_matching/Solution.java)| Hard | Top_Interview_Questions, String, Dynamic_Programming, Recursion, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 100.00 -#### Day 2 +#### Udemy Backtracking/Recursion | | | | | | |-|-|-|-|-|- -| 0110 |[Balanced Binary Tree](src/main/java/g0101_0200/s0110_balanced_binary_tree/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree | 1 | 98.82 -| 0459 |[Repeated Substring Pattern](src/main/java/g0401_0500/s0459_repeated_substring_pattern/Solution.java)| Easy | String, String_Matching | 8 | 96.64 +| 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 +| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 +| 0216 |[Combination Sum III](src/main/java/g0201_0300/s0216_combination_sum_iii/Solution.java)| Medium | Array, Backtracking, LeetCode_75_Backtracking | 1 | 81.35 +| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 0 | 100.00 +| 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, LeetCode_75_Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 +| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 -#### Day 3 +#### Udemy Bit Manipulation | | | | | | |-|-|-|-|-|- -| 0150 |[Evaluate Reverse Polish Notation](src/main/java/g0101_0200/s0150_evaluate_reverse_polish_notation/Solution.java)| Medium | Top_Interview_Questions, Array, Math, Stack | 6 | 76.50 -| 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 +| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 +| 0389 |[Find the Difference](src/main/java/g0301_0400/s0389_find_the_difference/Solution.java)| Easy | String, Hash_Table, Sorting, Bit_Manipulation | 1 | 100.00 +| 0190 |[Reverse Bits](src/main/java/g0101_0200/s0190_reverse_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer | 0 | 100.00 +| 0461 |[Hamming Distance](src/main/java/g0401_0500/s0461_hamming_distance/Solution.java)| Easy | Bit_Manipulation | 0 | 100.00 +| 1009 |[Complement of Base 10 Integer](src/main/java/g1001_1100/s1009_complement_of_base_10_integer/Solution.java)| Easy | Bit_Manipulation | 1 | 41.56 +| 0338 |[Counting Bits](src/main/java/g0301_0400/s0338_counting_bits/Solution.java)| Easy | Dynamic_Programming, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(num)_Space_O(num) | 2 | 96.37 +| 0371 |[Sum of Two Integers](src/main/java/g0301_0400/s0371_sum_of_two_integers/Solution.java)| Medium | Math, Bit_Manipulation | 0 | 100.00 +| 0029 |[Divide Two Integers](src/main/java/g0001_0100/s0029_divide_two_integers/Solution.java)| Medium | Top_Interview_Questions, Math, Bit_Manipulation | 1 | 97.44 -#### Day 4 +#### Udemy Design | | | | | | |-|-|-|-|-|- -| 1367 |[Linked List in Binary Tree](src/main/java/g1301_1400/s1367_linked_list_in_binary_tree/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 2 | 61.23 -| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 - -#### Day 5 +| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 -| | | | | | -|-|-|-|-|-|- -| 0067 |[Add Binary](src/main/java/g0001_0100/s0067_add_binary/Solution.java)| Easy | String, Math, Bit_Manipulation, Simulation | 1 | 99.82 -| 0989 |[Add to Array-Form of Integer](src/main/java/g0901_1000/s0989_add_to_array_form_of_integer/Solution.java)| Easy | Array, Math | 7 | 65.92 +### Top Interview 150 -#### Day 6 +#### Top Interview 150 Array/String | | | | | | |-|-|-|-|-|- -| 0739 |[Daily Temperatures](src/main/java/g0701_0800/s0739_daily_temperatures/Solution.java)| Medium | Top_100_Liked_Questions, Array, Stack, Monotonic_Stack, LeetCode_75_Monotonic_Stack, Big_O_Time_O(n)_Space_O(n) | 8 | 96.83 +| 0088 |[Merge Sorted Array](src/main/java/g0001_0100/s0088_merge_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Sorting, Two_Pointers | 0 | 100.00 +| 0027 |[Remove Element](src/main/java/g0001_0100/s0027_remove_element/Solution.java)| Easy | Array, Two_Pointers | 0 | 100.00 +| 0026 |[Remove Duplicates from Sorted Array](src/main/java/g0001_0100/s0026_remove_duplicates_from_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Two_Pointers | 0 | 100.00 +| 0080 |[Remove Duplicates from Sorted Array II](src/main/java/g0001_0100/s0080_remove_duplicates_from_sorted_array_ii/Solution.java)| Medium | Array, Two_Pointers | 0 | 100.00 +| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 +| 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 +| 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 76.91 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0274 |[H-Index](src/main/java/g0201_0300/s0274_h_index/Solution.java)| Medium | Array, Sorting, Counting_Sort | 0 | 100.00 +| 0380 |[Insert Delete GetRandom O(1)](src/main/java/g0301_0400/s0380_insert_delete_getrandom_o1/RandomizedSet.java)| Medium | Array, Hash_Table, Math, Design, Randomized | 27 | 93.44 +| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 +| 0134 |[Gas Station](src/main/java/g0101_0200/s0134_gas_station/Solution.java)| Medium | Top_Interview_Questions, Array, Greedy | 2 | 97.52 +| 0135 |[Candy](src/main/java/g0101_0200/s0135_candy/Solution.java)| Hard | Array, Greedy | 3 | 83.95 +| 0042 |[Trapping Rain Water](src/main/java/g0001_0100/s0042_trapping_rain_water/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Two_Pointers, Stack, Monotonic_Stack, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0013 |[Roman to Integer](src/main/java/g0001_0100/s0013_roman_to_integer/Solution.java)| Easy | Top_Interview_Questions, String, Hash_Table, Math, Big_O_Time_O(n)_Space_O(1) | 2 | 100.00 +| 0012 |[Integer to Roman](src/main/java/g0001_0100/s0012_integer_to_roman/Solution.java)| Medium | String, Hash_Table, Math, Big_O_Time_O(1)_Space_O(1) | 2 | 100.00 | 0058 |[Length of Last Word](src/main/java/g0001_0100/s0058_length_of_last_word/Solution.java)| Easy | String | 0 | 100.00 +| 0014 |[Longest Common Prefix](src/main/java/g0001_0100/s0014_longest_common_prefix/Solution.java)| Easy | Top_Interview_Questions, String, Big_O_Time_O(n\*m)_Space_O(m) | 0 | 100.00 +| 0151 |[Reverse Words in a String](src/main/java/g0101_0200/s0151_reverse_words_in_a_string/Solution.java)| Medium | String, Two_Pointers, LeetCode_75_Array/String | 2 | 99.69 +| 0006 |[Zigzag Conversion](src/main/java/g0001_0100/s0006_zigzag_conversion/Solution.java)| Medium | String, Big_O_Time_O(n)_Space_O(n) | 2 | 99.71 +| 0028 |[Find the Index of the First Occurrence in a String](src/main/java/g0001_0100/s0028_find_the_index_of_the_first_occurrence_in_a_string/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers, String_Matching | 0 | 100.00 +| 0068 |[Text Justification](src/main/java/g0001_0100/s0068_text_justification/Solution.java)| Hard | Array, String, Simulation | 0 | 100.00 -#### Day 7 - -| | | | | | -|-|-|-|-|-|- -| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 -| 1886 |[Determine Whether Matrix Can Be Obtained By Rotation](src/main/java/g1801_1900/s1886_determine_whether_matrix_can_be_obtained_by_rotation/Solution.java)| Easy | Array, Matrix | 1 | 78.38 - -#### Day 8 +#### Top Interview 150 Two Pointers | | | | | | |-|-|-|-|-|- -| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 -| 0973 |[K Closest Points to Origin](src/main/java/g0901_1000/s0973_k_closest_points_to_origin/Solution.java)| Medium | Array, Math, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Geometry, Quickselect | 4 | 98.26 +| 0125 |[Valid Palindrome](src/main/java/g0101_0200/s0125_valid_palindrome/Solution.java)| Easy | Top_Interview_Questions, String, Two_Pointers | 2 | 99.11 +| 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers, LeetCode_75_Two_Pointers | 1 | 93.13 +| 0167 |[Two Sum II - Input Array Is Sorted](src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java)| Medium | Array, Binary_Search, Two_Pointers | 2 | 92.62 +| 0011 |[Container With Most Water](src/main/java/g0001_0100/s0011_container_with_most_water/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Greedy, Two_Pointers, LeetCode_75_Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 3 | 96.01 +| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 -#### Day 9 +#### Top Interview 150 Sliding Window | | | | | | |-|-|-|-|-|- -| 1630 |[Arithmetic Subarrays](src/main/java/g1601_1700/s1630_arithmetic_subarrays/Solution.java)| Medium | Array, Sorting | 8 | 93.62 -| 0429 |[N-ary Tree Level Order Traversal](src/main/java/g0401_0500/s0429_n_ary_tree_level_order_traversal/Solution.java)| Medium | Breadth_First_Search, Tree | 3 | 80.26 +| 0209 |[Minimum Size Subarray Sum](src/main/java/g0201_0300/s0209_minimum_size_subarray_sum/Solution.java)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 1 | 99.76 +| 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 +| 0030 |[Substring with Concatenation of All Words](src/main/java/g0001_0100/s0030_substring_with_concatenation_of_all_words/Solution.java)| Hard | String, Hash_Table, Sliding_Window | 11 | 97.43 +| 0076 |[Minimum Window Substring](src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 2 | 99.83 -#### Day 10 +#### Top Interview 150 Matrix | | | | | | |-|-|-|-|-|- -| 0503 |[Next Greater Element II](src/main/java/g0501_0600/s0503_next_greater_element_ii/Solution.java)| Medium | Array, Stack, Monotonic_Stack | 7 | 97.03 -| 0556 |[Next Greater Element III](src/main/java/g0501_0600/s0556_next_greater_element_iii/Solution.java)| Medium | String, Math, Two_Pointers | 0 | 100.00 +| 0036 |[Valid Sudoku](src/main/java/g0001_0100/s0036_valid_sudoku/Solution.java)| Medium | Top_Interview_Questions, Array, Hash_Table, Matrix | 1 | 100.00 +| 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 +| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 +| 0073 |[Set Matrix Zeroes](src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Matrix, Big_O_Time_O(m\*n)_Space_O(1) | 0 | 100.00 +| 0289 |[Game of Life](src/main/java/g0201_0300/s0289_game_of_life/Solution.java)| Medium | Array, Matrix, Simulation | 0 | 100.00 -#### Day 11 +#### Top Interview 150 Hashmap | | | | | | |-|-|-|-|-|- -| 1376 |[Time Needed to Inform All Employees](src/main/java/g1301_1400/s1376_time_needed_to_inform_all_employees/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree | 8 | 99.85 +| 0383 |[Ransom Note](src/main/java/g0301_0400/s0383_ransom_note/Solution.java)| Easy | String, Hash_Table, Counting | 1 | 99.10 +| 0205 |[Isomorphic Strings](src/main/java/g0201_0300/s0205_isomorphic_strings/Solution.java)| Easy | String, Hash_Table | 2 | 99.18 +| 0290 |[Word Pattern](src/main/java/g0201_0300/s0290_word_pattern/Solution.java)| Easy | String, Hash_Table | 0 | 100.00 +| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 | 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 +| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 +| 0202 |[Happy Number](src/main/java/g0201_0300/s0202_happy_number/Solution.java)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 +| 0219 |[Contains Duplicate II](src/main/java/g0201_0300/s0219_contains_duplicate_ii/Solution.java)| Easy | Array, Hash_Table, Sliding_Window | 15 | 98.00 +| 0128 |[Longest Consecutive Sequence](src/main/java/g0101_0200/s0128_longest_consecutive_sequence/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Union_Find, Big_O_Time_O(N_log_N)_Space_O(1) | 14 | 98.89 -#### Day 12 - -| | | | | | -|-|-|-|-|-|- -| 0438 |[Find All Anagrams in a String](src/main/java/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 3 | 99.83 -| 0713 |[Subarray Product Less Than K](src/main/java/g0701_0800/s0713_subarray_product_less_than_k/Solution.java)| Medium | Array, Sliding_Window | 8 | 39.00 - -#### Day 13 +#### Top Interview 150 Intervals | | | | | | |-|-|-|-|-|- -| 0304 |[Range Sum Query 2D - Immutable](src/main/java/g0301_0400/s0304_range_sum_query_2d_immutable/NumMatrix.java)| Medium | Array, Matrix, Design, Prefix_Sum | 153 | 87.51 -| 0910 |[Smallest Range II](src/main/java/g0901_1000/s0910_smallest_range_ii/Solution.java)| Medium | Array, Math, Sorting, Greedy | 10 | 73.16 +| 0228 |[Summary Ranges](src/main/java/g0201_0300/s0228_summary_ranges/Solution.java)| Easy | Array | 0 | 100.00 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 +| 0057 |[Insert Interval](src/main/java/g0001_0100/s0057_insert_interval/Solution.java)| Medium | Array | 0 | 100.00 +| 0452 |[Minimum Number of Arrows to Burst Balloons](src/main/java/g0401_0500/s0452_minimum_number_of_arrows_to_burst_balloons/Solution.java)| Medium | Array, Sorting, Greedy, LeetCode_75_Intervals | 52 | 89.91 -#### Day 14 +#### Top Interview 150 Stack | | | | | | |-|-|-|-|-|- -| 0143 |[Reorder List](src/main/java/g0101_0200/s0143_reorder_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List, Recursion | 2 | 72.59 -| 0138 |[Copy List with Random Pointer](src/main/java/g0101_0200/s0138_copy_list_with_random_pointer/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 +| 0020 |[Valid Parentheses](src/main/java/g0001_0100/s0020_valid_parentheses/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 2 | 97.19 +| 0071 |[Simplify Path](src/main/java/g0001_0100/s0071_simplify_path/Solution.java)| Medium | String, Stack | 2 | 99.86 +| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 +| 0150 |[Evaluate Reverse Polish Notation](src/main/java/g0101_0200/s0150_evaluate_reverse_polish_notation/Solution.java)| Medium | Top_Interview_Questions, Array, Math, Stack | 6 | 76.50 +| 0224 |[Basic Calculator](src/main/java/g0201_0300/s0224_basic_calculator/Solution.java)| Hard | String, Math, Stack, Recursion | 2 | 96.52 -#### Day 15 +#### Top Interview 150 Linked List | | | | | | |-|-|-|-|-|- +| 0141 |[Linked List Cycle](src/main/java/g0101_0200/s0141_linked_list_cycle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 | 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 -| 0445 |[Add Two Numbers II](src/main/java/g0401_0500/s0445_add_two_numbers_ii/Solution.java)| Medium | Math, Stack, Linked_List | 3 | 90.38 +| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 +| 0138 |[Copy List with Random Pointer](src/main/java/g0101_0200/s0138_copy_list_with_random_pointer/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 +| 0092 |[Reverse Linked List II](src/main/java/g0001_0100/s0092_reverse_linked_list_ii/Solution.java)| Medium | Linked_List | 0 | 100.00 +| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 +| 0019 |[Remove Nth Node From End of List](src/main/java/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Two_Pointers, Linked_List, Big_O_Time_O(L)_Space_O(L) | 0 | 100.00 +| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0061 |[Rotate List](src/main/java/g0001_0100/s0061_rotate_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0086 |[Partition List](src/main/java/g0001_0100/s0086_partition_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0146 |[LRU Cache](src/main/java/g0101_0200/s0146_lru_cache/LRUCache.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Design, Linked_List, Doubly_Linked_List, Big_O_Time_O(1)_Space_O(capacity) | 40 | 98.20 -#### Day 16 +#### Top Interview 150 Binary Tree General | | | | | | |-|-|-|-|-|- -| 0061 |[Rotate List](src/main/java/g0001_0100/s0061_rotate_list/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 +| 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 +| 0100 |[Same Tree](src/main/java/g0001_0100/s0100_same_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0101 |[Symmetric Tree](src/main/java/g0101_0200/s0101_symmetric_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 0105 |[Construct Binary Tree from Preorder and Inorder Traversal](src/main/java/g0101_0200/s0105_construct_binary_tree_from_preorder_and_inorder_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer, Big_O_Time_O(N)_Space_O(N) | 1 | 96.33 +| 0106 |[Construct Binary Tree from Inorder and Postorder Traversal](src/main/java/g0101_0200/s0106_construct_binary_tree_from_inorder_and_postorder_traversal/Solution.java)| Medium | Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer | 0 | 100.00 +| 0117 |[Populating Next Right Pointers in Each Node II](src/main/java/g0101_0200/s0117_populating_next_right_pointers_in_each_node_ii/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Linked_List | 0 | 100.00 +| 0114 |[Flatten Binary Tree to Linked List](src/main/java/g0101_0200/s0114_flatten_binary_tree_to_linked_list/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Linked_List, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 +| 0112 |[Path Sum](src/main/java/g0101_0200/s0112_path_sum/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0129 |[Sum Root to Leaf Numbers](src/main/java/g0101_0200/s0129_sum_root_to_leaf_numbers/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree | 0 | 100.00 +| 0124 |[Binary Tree Maximum Path Sum](src/main/java/g0101_0200/s0124_binary_tree_maximum_path_sum/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 | 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 +| 0222 |[Count Complete Tree Nodes](src/main/java/g0201_0300/s0222_count_complete_tree_nodes/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Search, Binary_Tree | 0 | 100.00 +| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 -#### Day 17 +#### Top Interview 150 Binary Tree BFS | | | | | | |-|-|-|-|-|- -| 1845 |[Seat Reservation Manager](src/main/java/g1801_1900/s1845_seat_reservation_manager/SeatManager.java)| Medium | Design, Heap_Priority_Queue | 47 | 87.63 -| 0860 |[Lemonade Change](src/main/java/g0801_0900/s0860_lemonade_change/Solution.java)| Easy | Array, Greedy | 2 | 90.84 +| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 +| 0637 |[Average of Levels in Binary Tree](src/main/java/g0601_0700/s0637_average_of_levels_in_binary_tree/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 2 | 94.34 +| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 +| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -#### Day 18 +#### Top Interview 150 Binary Search Tree | | | | | | |-|-|-|-|-|- -| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 -| 0341 |[Flatten Nested List Iterator](src/main/java/g0301_0400/s0341_flatten_nested_list_iterator/NestedIterator.java)| Medium | Depth_First_Search, Tree, Stack, Design, Queue, Iterator | 2 | 99.95 +| 0530 |[Minimum Absolute Difference in BST](src/main/java/g0501_0600/s0530_minimum_absolute_difference_in_bst/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 +| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -#### Day 19 +#### Top Interview 150 Graph General | | | | | | |-|-|-|-|-|- -| 1797 |[Design Authentication Manager](src/main/java/g1701_1800/s1797_design_authentication_manager/AuthenticationManager.java)| Medium | Hash_Table, Design | 41 | 92.67 -| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 +| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 +| 0130 |[Surrounded Regions](src/main/java/g0101_0200/s0130_surrounded_regions/Solution.java)| Medium | Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 2 | 84.66 +| 0133 |[Clone Graph](src/main/java/g0101_0200/s0133_clone_graph/Solution.java)| Medium | Hash_Table, Depth_First_Search, Breadth_First_Search, Graph | 25 | 68.87 +| 0399 |[Evaluate Division](src/main/java/g0301_0400/s0399_evaluate_division/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Graph, Union_Find, Shortest_Path, LeetCode_75_Graphs/DFS | 1 | 99.52 +| 0207 |[Course Schedule](src/main/java/g0201_0300/s0207_course_schedule/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort, Big_O_Time_O(N)_Space_O(N) | 3 | 99.99 +| 0210 |[Course Schedule II](src/main/java/g0201_0300/s0210_course_schedule_ii/Solution.java)| Medium | Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort | 4 | 91.07 -#### Day 20 +#### Top Interview 150 Graph BFS | | | | | | |-|-|-|-|-|- -| 0380 |[Insert Delete GetRandom O(1)](src/main/java/g0301_0400/s0380_insert_delete_getrandom_o1/RandomizedSet.java)| Medium | Array, Hash_Table, Math, Design, Randomized | 27 | 93.44 -| 0622 |[Design Circular Queue](src/main/java/g0601_0700/s0622_design_circular_queue/MyCircularQueue.java)| Medium | Array, Design, Linked_List, Queue | 3 | 100.00 -| 0729 |[My Calendar I](src/main/java/g0701_0800/s0729_my_calendar_i/MyCalendar.java)| Medium | Binary_Search, Design, Ordered_Set, Segment_Tree | 17 | 97.23 - -### Graph Theory I +| 0909 |[Snakes and Ladders](src/main/java/g0901_1000/s0909_snakes_and_ladders/Solution.java)| Medium | Array, Breadth_First_Search, Matrix | 4 | 95.81 +| 0433 |[Minimum Genetic Mutation](src/main/java/g0401_0500/s0433_minimum_genetic_mutation/Solution.java)| Medium | String, Hash_Table, Breadth_First_Search | 0 | 100.00 +| 0127 |[Word Ladder](src/main/java/g0101_0200/s0127_word_ladder/Solution.java)| Hard | Top_Interview_Questions, String, Hash_Table, Breadth_First_Search | 22 | 96.00 -#### Day 1 Matrix Related Problems +#### Top Interview 150 Trie | | | | | | |-|-|-|-|-|- -| 0733 |[Flood Fill](src/main/java/g0701_0800/s0733_flood_fill/Solution.java)| Easy | Array, Depth_First_Search, Breadth_First_Search, Matrix | 1 | 85.36 -| 0200 |[Number of Islands](src/main/java/g0101_0200/s0200_number_of_islands/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Big_O_Time_O(M\*N)_Space_O(M\*N) | 3 | 87.24 +| 0208 |[Implement Trie (Prefix Tree)](src/main/java/g0201_0300/s0208_implement_trie_prefix_tree/Trie.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, LeetCode_75_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 32 | 95.05 +| 0211 |[Design Add and Search Words Data Structure](src/main/java/g0201_0300/s0211_design_add_and_search_words_data_structure/WordDictionary.java)| Medium | String, Depth_First_Search, Design, Trie | 156 | 99.85 +| 0212 |[Word Search II](src/main/java/g0201_0300/s0212_word_search_ii/Solution.java)| Hard | Top_Interview_Questions, Array, String, Matrix, Backtracking, Trie | 17 | 99.16 -#### Day 2 Matrix Related Problems +#### Top Interview 150 Backtracking | | | | | | |-|-|-|-|-|- -| 0695 |[Max Area of Island](src/main/java/g0601_0700/s0695_max_area_of_island/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 3 | 76.79 -| 1254 |[Number of Closed Islands](src/main/java/g1201_1300/s1254_number_of_closed_islands/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 3 | 55.59 +| 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, LeetCode_75_Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 +| 0077 |[Combinations](src/main/java/g0001_0100/s0077_combinations/Solution.java)| Medium | Backtracking | 15 | 92.38 +| 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 +| 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 +| 0052 |[N-Queens II](src/main/java/g0001_0100/s0052_n_queens_ii/Solution.java)| Hard | Backtracking | 0 | 100.00 +| 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 +| 0079 |[Word Search](src/main/java/g0001_0100/s0079_word_search/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Backtracking, Big_O_Time_O(4^(m\*n))_Space_O(m\*n) | 64 | 98.51 -#### Day 3 Matrix Related Problems +#### Top Interview 150 Divide and Conquer | | | | | | |-|-|-|-|-|- -| 1020 |[Number of Enclaves](src/main/java/g1001_1100/s1020_number_of_enclaves/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 6 | 68.24 -| 1905 |[Count Sub Islands](src/main/java/g1901_2000/s1905_count_sub_islands/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 24 | 85.54 +| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 +| 0148 |[Sort List](src/main/java/g0101_0200/s0148_sort_list/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Sorting, Two_Pointers, Linked_List, Divide_and_Conquer, Merge_Sort, Big_O_Time_O(log(N))_Space_O(log(N)) | 9 | 93.90 +| 0427 |[Construct Quad Tree](src/main/java/g0401_0500/s0427_construct_quad_tree/Solution.java)| Medium | Array, Tree, Matrix, Divide_and_Conquer | 0 | 100.00 +| 0023 |[Merge k Sorted Lists](src/main/java/g0001_0100/s0023_merge_k_sorted_lists/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Heap_Priority_Queue, Linked_List, Divide_and_Conquer, Merge_Sort, Big_O_Time_O(k\*n\*log(k))_Space_O(log(k)) | 1 | 99.86 -#### Day 4 Matrix Related Problems +#### Top Interview 150 Kadane's Algorithm | | | | | | |-|-|-|-|-|- -| 1162 |[As Far from Land as Possible](src/main/java/g1101_1200/s1162_as_far_from_land_as_possible/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search, Matrix | 16 | 62.40 -| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 5 | 92.62 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 +| 0918 |[Maximum Sum Circular Subarray](src/main/java/g0901_1000/s0918_maximum_sum_circular_subarray/Solution.java)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue | 2 | 99.34 -#### Day 5 Matrix Related Problems +#### Top Interview 150 Binary Search | | | | | | |-|-|-|-|-|- -| 1091 |[Shortest Path in Binary Matrix](src/main/java/g1001_1100/s1091_shortest_path_in_binary_matrix/Solution.java)| Medium | Array, Breadth_First_Search, Matrix | 22 | 69.99 -| 0542 |[01 Matrix](src/main/java/g0501_0600/s0542_01_matrix/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search, Matrix | 7 | 95.83 +| 0035 |[Search Insert Position](src/main/java/g0001_0100/s0035_search_insert_position/Solution.java)| Easy | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 +| 0162 |[Find Peak Element](src/main/java/g0101_0200/s0162_find_peak_element/Solution.java)| Medium | Top_Interview_Questions, Array, Binary_Search, LeetCode_75_Binary_Search | 0 | 100.00 +| 0033 |[Search in Rotated Sorted Array](src/main/java/g0001_0100/s0033_search_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0034 |[Find First and Last Position of Element in Sorted Array](src/main/java/g0001_0100/s0034_find_first_and_last_position_of_element_in_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Big_O_Time_O(log_n)_Space_O(1) | 0 | 100.00 +| 0153 |[Find Minimum in Rotated Sorted Array](src/main/java/g0101_0200/s0153_find_minimum_in_rotated_sorted_array/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Big_O_Time_O(log_N)_Space_O(log_N) | 0 | 100.00 +| 0004 |[Median of Two Sorted Arrays](src/main/java/g0001_0100/s0004_median_of_two_sorted_arrays/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Divide_and_Conquer, Big_O_Time_O(log(min(N,M)))_Space_O(1), AI_can_be_used_to_solve_the_task | 1 | 100.00 -#### Day 6 Matrix Related Problems +#### Top Interview 150 Heap | | | | | | |-|-|-|-|-|- -| 0934 |[Shortest Bridge](src/main/java/g0901_1000/s0934_shortest_bridge/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix | 6 | 97.87 -| 1926 |[Nearest Exit from Entrance in Maze](src/main/java/g1901_2000/s1926_nearest_exit_from_entrance_in_maze/Solution.java)| Medium | Array, Breadth_First_Search, Matrix, LeetCode_75_Graphs/BFS | 12 | 40.55 +| 0215 |[Kth Largest Element in an Array](src/main/java/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, LeetCode_75_Heap/Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 5 | 70.82 +| 0502 |[IPO](src/main/java/g0501_0600/s0502_ipo/Solution.java)| Hard | Array, Sorting, Greedy, Heap_Priority_Queue | 64 | 97.22 +| 0373 |[Find K Pairs with Smallest Sums](src/main/java/g0301_0400/s0373_find_k_pairs_with_smallest_sums/Solution.java)| Medium | Array, Heap_Priority_Queue | 27 | 90.23 +| 0295 |[Find Median from Data Stream](src/main/java/g0201_0300/s0295_find_median_from_data_stream/MedianFinder.java)| Hard | Top_100_Liked_Questions, Sorting, Two_Pointers, Design, Heap_Priority_Queue, Data_Stream, Big_O_Time_O(n\*log_n)_Space_O(n) | 83 | 99.56 -#### Day 7 Standard Traversal +#### Top Interview 150 Bit Manipulation | | | | | | |-|-|-|-|-|- -| 0797 |[All Paths From Source to Target](src/main/java/g0701_0800/s0797_all_paths_from_source_to_target/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Backtracking | 2 | 90.53 -| 0841 |[Keys and Rooms](src/main/java/g0801_0900/s0841_keys_and_rooms/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 3 | 51.54 +| 0067 |[Add Binary](src/main/java/g0001_0100/s0067_add_binary/Solution.java)| Easy | String, Math, Bit_Manipulation, Simulation | 1 | 99.82 +| 0190 |[Reverse Bits](src/main/java/g0101_0200/s0190_reverse_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer | 0 | 100.00 +| 0191 |[Number of 1 Bits](src/main/java/g0101_0200/s0191_number_of_1_bits/Solution.java)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 +| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 +| 0137 |[Single Number II](src/main/java/g0101_0200/s0137_single_number_ii/Solution.java)| Medium | Array, Bit_Manipulation | 0 | 100.00 +| 0201 |[Bitwise AND of Numbers Range](src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java)| Medium | Bit_Manipulation | 3 | 100.00 -#### Day 8 Standard Traversal +#### Top Interview 150 Math | | | | | | |-|-|-|-|-|- -| 0547 |[Number of Provinces](src/main/java/g0501_0600/s0547_number_of_provinces/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find, LeetCode_75_Graphs/DFS | 2 | 69.51 -| 1319 |[Number of Operations to Make Network Connected](src/main/java/g1301_1400/s1319_number_of_operations_to_make_network_connected/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find | 9 | 67.64 +| 0009 |[Palindrome Number](src/main/java/g0001_0100/s0009_palindrome_number/Solution.java)| Easy | Math, Big_O_Time_O(log10(x))_Space_O(1) | 4 | 100.00 +| 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 +| 0172 |[Factorial Trailing Zeroes](src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java)| Medium | Top_Interview_Questions, Math | 0 | 100.00 +| 0069 |[Sqrt(x)](src/main/java/g0001_0100/s0069_sqrtx/Solution.java)| Easy | Top_Interview_Questions, Math, Binary_Search | 1 | 86.67 +| 0050 |[Pow(x, n)](src/main/java/g0001_0100/s0050_powx_n/Solution.java)| Medium | Top_Interview_Questions, Math, Recursion | 0 | 100.00 +| 0149 |[Max Points on a Line](src/main/java/g0101_0200/s0149_max_points_on_a_line/Solution.java)| Hard | Top_Interview_Questions, Array, Hash_Table, Math, Geometry | 7 | 99.18 -#### Day 9 Standard Traversal +#### Top Interview 150 1D DP | | | | | | |-|-|-|-|-|- -| 1376 |[Time Needed to Inform All Employees](src/main/java/g1301_1400/s1376_time_needed_to_inform_all_employees/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree | 8 | 99.85 -| 0802 |[Find Eventual Safe States](src/main/java/g0801_0900/s0802_find_eventual_safe_states/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort | 7 | 74.93 +| 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0198 |[House Robber](src/main/java/g0101_0200/s0198_house_robber/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, LeetCode_75_DP/1D, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0139 |[Word Break](src/main/java/g0101_0200/s0139_word_break/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Dynamic_Programming, Trie, Memoization, Big_O_Time_O(M+max\*N)_Space_O(M+N+max) | 1 | 99.42 +| 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 12 | 92.59 +| 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 95.75 -#### Day 10 Standard Traversal +#### Top Interview 150 Multidimensional DP | | | | | | |-|-|-|-|-|- -| 1129 |[Shortest Path with Alternating Colors](src/main/java/g1101_1200/s1129_shortest_path_with_alternating_colors/Solution.java)| Medium | Breadth_First_Search, Graph | 4 | 96.63 -| 1466 |[Reorder Routes to Make All Paths Lead to the City Zero](src/main/java/g1401_1500/s1466_reorder_routes_to_make_all_paths_lead_to_the_city_zero/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 39 | 97.71 -| 0847 |[Shortest Path Visiting All Nodes](src/main/java/g0801_0900/s0847_shortest_path_visiting_all_nodes/Solution.java)| Hard | Dynamic_Programming, Breadth_First_Search, Bit_Manipulation, Graph, Bitmask | 14 | 78.72 +| 0120 |[Triangle](src/main/java/g0101_0200/s0120_triangle/Solution.java)| Medium | Array, Dynamic_Programming | 1 | 99.79 +| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 +| 0063 |[Unique Paths II](src/main/java/g0001_0100/s0063_unique_paths_ii/Solution.java)| Medium | Array, Dynamic_Programming, Matrix | 0 | 100.00 +| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 +| 0097 |[Interleaving String](src/main/java/g0001_0100/s0097_interleaving_string/Solution.java)| Medium | String, Dynamic_Programming | 0 | 100.00 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, LeetCode_75_DP/Multidimensional, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 +| 0123 |[Best Time to Buy and Sell Stock III](src/main/java/g0101_0200/s0123_best_time_to_buy_and_sell_stock_iii/Solution.java)| Hard | Array, Dynamic_Programming | 4 | 74.67 +| 0188 |[Best Time to Buy and Sell Stock IV](src/main/java/g0101_0200/s0188_best_time_to_buy_and_sell_stock_iv/Solution.java)| Hard | Array, Dynamic_Programming | 1 | 99.73 +| 0221 |[Maximal Square](src/main/java/g0201_0300/s0221_maximal_square/Solution.java)| Medium | Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 6 | 97.07 -#### Day 11 Breadth First Search +### Data Structure I + +#### Day 1 Array | | | | | | |-|-|-|-|-|- -| 1306 |[Jump Game III](src/main/java/g1301_1400/s1306_jump_game_iii/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search | 2 | 96.23 -| 1654 |[Minimum Jumps to Reach Home](src/main/java/g1601_1700/s1654_minimum_jumps_to_reach_home/Solution.java)| Medium | Array, Dynamic_Programming, Breadth_First_Search | 6 | 99.87 -| 0365 |[Water and Jug Problem](src/main/java/g0301_0400/s0365_water_and_jug_problem/Solution.java)| Medium | Math, Depth_First_Search, Breadth_First_Search | 0 | 100.00 +| 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 -#### Day 12 Breadth First Search +#### Day 2 Array | | | | | | |-|-|-|-|-|- -| 0433 |[Minimum Genetic Mutation](src/main/java/g0401_0500/s0433_minimum_genetic_mutation/Solution.java)| Medium | String, Hash_Table, Breadth_First_Search | 0 | 100.00 -| 0752 |[Open the Lock](src/main/java/g0701_0800/s0752_open_the_lock/Solution.java)| Medium | Array, String, Hash_Table, Breadth_First_Search | 72 | 91.06 -| 0127 |[Word Ladder](src/main/java/g0101_0200/s0127_word_ladder/Solution.java)| Hard | Top_Interview_Questions, String, Hash_Table, Breadth_First_Search | 22 | 96.00 +| 0001 |[Two Sum](src/main/java/g0001_0100/s0001_two_sum/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Big_O_Time_O(n)_Space_O(n), AI_can_be_used_to_solve_the_task | 2 | 98.90 +| 0088 |[Merge Sorted Array](src/main/java/g0001_0100/s0088_merge_sorted_array/Solution.java)| Easy | Top_Interview_Questions, Array, Sorting, Two_Pointers | 0 | 100.00 -#### Day 13 Graph Theory +#### Day 3 Array | | | | | | |-|-|-|-|-|- -| 0997 |[Find the Town Judge](src/main/java/g0901_1000/s0997_find_the_town_judge/Solution.java)| Easy | Array, Hash_Table, Graph | 3 | 80.64 -| 1557 |[Minimum Number of Vertices to Reach All Nodes](src/main/java/g1501_1600/s1557_minimum_number_of_vertices_to_reach_all_nodes/Solution.java)| Medium | Graph | 8 | 99.94 +| 0350 |[Intersection of Two Arrays II](src/main/java/g0301_0400/s0350_intersection_of_two_arrays_ii/Solution.java)| Easy | Array, Hash_Table, Sorting, Binary_Search, Two_Pointers | 4 | 69.62 +| 0121 |[Best Time to Buy and Sell Stock](src/main/java/g0101_0200/s0121_best_time_to_buy_and_sell_stock/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 1 | 99.78 -#### Day 14 Graph Theory +#### Day 4 Array | | | | | | |-|-|-|-|-|- -| 1615 |[Maximal Network Rank](src/main/java/g1601_1700/s1615_maximal_network_rank/Solution.java)| Medium | Graph | 3 | 97.34 -| 0886 |[Possible Bipartition](src/main/java/g0801_0900/s0886_possible_bipartition/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find | 20 | 80.12 -| 0785 |[Is Graph Bipartite?](src/main/java/g0701_0800/s0785_is_graph_bipartite/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, Union_Find | 0 | 100.00 - -### SQL I +| 0566 |[Reshape the Matrix](src/main/java/g0501_0600/s0566_reshape_the_matrix/Solution.java)| Easy | Array, Matrix, Simulation | 1 | 90.08 +| 0118 |[Pascal's Triangle](src/main/java/g0101_0200/s0118_pascals_triangle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 1 | 67.08 -#### Day 1 Select +#### Day 5 Array | | | | | | |-|-|-|-|-|- -| 0595 |[Big Countries](src/main/java/g0501_0600/s0595_big_countries/script.sql)| Easy | Database | 262 | 84.64 -| 1757 |[Recyclable and Low Fat Products](src/main/java/g1701_1800/s1757_recyclable_and_low_fat_products/script.sql)| Easy | Database | 475 | 71.54 -| 0584 |[Find Customer Referee](src/main/java/g0501_0600/s0584_find_customer_referee/script.sql)| Easy | Database | 531 | 58.63 -| 0183 |[Customers Who Never Order](src/main/java/g0101_0200/s0183_customers_who_never_order/script.sql)| Easy | Database | 376 | 98.73 +| 0036 |[Valid Sudoku](src/main/java/g0001_0100/s0036_valid_sudoku/Solution.java)| Medium | Top_Interview_Questions, Array, Hash_Table, Matrix | 1 | 100.00 +| 0074 |[Search a 2D Matrix](src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Big_O_Time_O(endRow+endCol)_Space_O(1) | 0 | 100.00 -#### Day 2 Select and Order +#### Day 6 String | | | | | | |-|-|-|-|-|- -| 1873 |[Calculate Special Bonus](src/main/java/g1801_1900/s1873_calculate_special_bonus/script.sql)| Easy | Database | 543 | 71.60 -| 0627 |[Swap Salary](src/main/java/g0601_0700/s0627_swap_salary/script.sql)| Easy | Database | 191 | 96.89 -| 0196 |[Delete Duplicate Emails](src/main/java/g0101_0200/s0196_delete_duplicate_emails/script.sql)| Easy | Database | 903 | 48.10 +| 0387 |[First Unique Character in a String](src/main/java/g0301_0400/s0387_first_unique_character_in_a_string/Solution.java)| Easy | String, Hash_Table, Counting, Queue | 1 | 100.00 +| 0383 |[Ransom Note](src/main/java/g0301_0400/s0383_ransom_note/Solution.java)| Easy | String, Hash_Table, Counting | 1 | 99.10 +| 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 97.76 -#### Day 3 String Processing Functions +#### Day 7 Linked List | | | | | | |-|-|-|-|-|- -| 1667 |[Fix Names in a Table](src/main/java/g1601_1700/s1667_fix_names_in_a_table/script.sql)| Easy | Database | 559 | 80.29 -| 1484 |[Group Sold Products By The Date](src/main/java/g1401_1500/s1484_group_sold_products_by_the_date/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 395 | 77.20 -| 1527 |[Patients With a Condition](src/main/java/g1501_1600/s1527_patients_with_a_condition/script.sql)| Easy | Database | 308 | 66.93 +| 0141 |[Linked List Cycle](src/main/java/g0101_0200/s0141_linked_list_cycle/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0021 |[Merge Two Sorted Lists](src/main/java/g0001_0100/s0021_merge_two_sorted_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Big_O_Time_O(m+n)_Space_O(m+n) | 0 | 100.00 +| 0203 |[Remove Linked List Elements](src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java)| Easy | Linked_List, Recursion | 1 | 98.82 -#### Day 4 Union and Select +#### Day 8 Linked List | | | | | | |-|-|-|-|-|- -| 1965 |[Employees With Missing Information](src/main/java/g1901_2000/s1965_employees_with_missing_information/script.sql)| Easy | Database | 617 | 30.40 -| 1795 |[Rearrange Products Table](src/main/java/g1701_1800/s1795_rearrange_products_table/script.sql)| Easy | Database | 497 | 64.83 -| 0608 |[Tree Node](src/main/java/g0601_0700/s0608_tree_node/script.sql)| Medium | LeetCode_Curated_SQL_70, Database | 347 | 95.17 -| 0176 |[Second Highest Salary](src/main/java/g0101_0200/s0176_second_highest_salary/script.sql)| Medium | Database | 225 | 73.10 +| 0206 |[Reverse Linked List](src/main/java/g0201_0300/s0206_reverse_linked_list/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, LeetCode_75_LinkedList, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0083 |[Remove Duplicates from Sorted List](src/main/java/g0001_0100/s0083_remove_duplicates_from_sorted_list/Solution.java)| Easy | Linked_List | 0 | 100.00 -#### Day 5 Union +#### Day 9 Stack Queue | | | | | | |-|-|-|-|-|- -| 0175 |[Combine Two Tables](src/main/java/g0101_0200/s0175_combine_two_tables/script.sql)| Easy | Database | 491 | 32.30 -| 1581 |[Customer Who Visited but Did Not Make Any Transactions](src/main/java/g1501_1600/s1581_customer_who_visited_but_did_not_make_any_transactions/script.sql)| Easy | Database | 1039 | 76.99 -| 1148 |[Article Views I](src/main/java/g1101_1200/s1148_article_views_i/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 783 | 64.09 +| 0020 |[Valid Parentheses](src/main/java/g0001_0100/s0020_valid_parentheses/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 2 | 97.19 +| 0232 |[Implement Queue using Stacks](src/main/java/g0201_0300/s0232_implement_queue_using_stacks/MyQueue.java)| Easy | Stack, Design, Queue | 1 | 67.21 -#### Day 6 Union +#### Day 10 Tree | | | | | | |-|-|-|-|-|- -| 0197 |[Rising Temperature](src/main/java/g0101_0200/s0197_rising_temperature/script.sql)| Easy | Database | 342 | 93.76 -| 0607 |[Sales Person](src/main/java/g0601_0700/s0607_sales_person/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 1046 | 86.04 +| 0144 |[Binary Tree Preorder Traversal](src/main/java/g0101_0200/s0144_binary_tree_preorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 48.38 +| 0094 |[Binary Tree Inorder Traversal](src/main/java/g0001_0100/s0094_binary_tree_inorder_traversal/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Stack, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0145 |[Binary Tree Postorder Traversal](src/main/java/g0101_0200/s0145_binary_tree_postorder_traversal/Solution.java)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack | 1 | 49.11 -#### Day 7 Function +#### Day 11 Tree | | | | | | |-|-|-|-|-|- -| 1141 |[User Activity for the Past 30 Days I](src/main/java/g1101_1200/s1141_user_activity_for_the_past_30_days_i/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 849 | 72.54 -| 1693 |[Daily Leads and Partners](src/main/java/g1601_1700/s1693_daily_leads_and_partners/script.sql)| Easy | Database | 463 | 78.98 -| 1729 |[Find Followers Count](src/main/java/g1701_1800/s1729_find_followers_count/script.sql)| Easy | Database | 456 | 88.39 +| 0102 |[Binary Tree Level Order Traversal](src/main/java/g0101_0200/s0102_binary_tree_level_order_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 1 | 91.19 +| 0104 |[Maximum Depth of Binary Tree](src/main/java/g0101_0200/s0104_maximum_depth_of_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(N)_Space_O(H) | 0 | 100.00 +| 0101 |[Symmetric Tree](src/main/java/g0101_0200/s0101_symmetric_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 -#### Day 8 Function +#### Day 12 Tree | | | | | | |-|-|-|-|-|- -| 0586 |[Customer Placing the Largest Number of Orders](src/main/java/g0501_0600/s0586_customer_placing_the_largest_number_of_orders/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 484 | 66.42 -| 0511 |[Game Play Analysis I](src/main/java/g0501_0600/s0511_game_play_analysis_i/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 586 | 56.94 -| 1890 |[The Latest Login in 2020](src/main/java/g1801_1900/s1890_the_latest_login_in_2020/script.sql)| Easy | Database | 571 | 73.59 -| 1741 |[Find Total Time Spent by Each Employee](src/main/java/g1701_1800/s1741_find_total_time_spent_by_each_employee/script.sql)| Easy | Database | 414 | 93.27 +| 0226 |[Invert Binary Tree](src/main/java/g0201_0300/s0226_invert_binary_tree/Solution.java)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0112 |[Path Sum](src/main/java/g0101_0200/s0112_path_sum/Solution.java)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 -#### Day 9 Control of Flow +#### Day 13 Tree | | | | | | |-|-|-|-|-|- -| 1393 |[Capital Gain/Loss](src/main/java/g1301_1400/s1393_capital_gainloss/script.sql)| Medium | LeetCode_Curated_SQL_70, Database | 428 | 92.01 -| 1407 |[Top Travellers](src/main/java/g1401_1500/s1407_top_travellers/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 682 | 70.16 -| 1158 |[Market Analysis I](src/main/java/g1101_1200/s1158_market_analysis_i/script.sql)| Medium | Database | 2511 | 78.92 +| 0700 |[Search in a Binary Search Tree](src/main/java/g0601_0700/s0700_search_in_a_binary_search_tree/Solution.java)| Easy | Tree, Binary_Tree, Binary_Search_Tree, LeetCode_75_Binary_Search_Tree | 0 | 100.00 +| 0701 |[Insert into a Binary Search Tree](src/main/java/g0701_0800/s0701_insert_into_a_binary_search_tree/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree | 0 | 100.00 -#### Day 10 Where +#### Day 14 Tree | | | | | | |-|-|-|-|-|- -| 0182 |[Duplicate Emails](src/main/java/g0101_0200/s0182_duplicate_emails/script.sql)| Easy | Database | 303 | 92.08 -| 1050 |[Actors and Directors Who Cooperated At Least Three Times](src/main/java/g1001_1100/s1050_actors_and_directors_who_cooperated_at_least_three_times/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 344 | 76.48 -| 1587 |[Bank Account Summary II](src/main/java/g1501_1600/s1587_bank_account_summary_ii/script.sql)| Easy | Database | 630 | 60.32 -| 1084 |[Sales Analysis III](src/main/java/g1001_1100/s1084_sales_analysis_iii/script.sql)| Easy | LeetCode_Curated_SQL_70, Database | 1066 | 69.71 +| 0098 |[Validate Binary Search Tree](src/main/java/g0001_0100/s0098_validate_binary_search_tree/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(N)_Space_O(log(N)) | 0 | 100.00 +| 0653 |[Two Sum IV - Input is a BST](src/main/java/g0601_0700/s0653_two_sum_iv_input_is_a_bst/Solution.java)| Easy | Hash_Table, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Two_Pointers, Binary_Search_Tree | 5 | 74.23 +| 0235 |[Lowest Common Ancestor of a Binary Search Tree](src/main/java/g0201_0300/s0235_lowest_common_ancestor_of_a_binary_search_tree/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 4 | 100.00 ## Contributing Your ideas/fixes/algorithms are more than welcome! From eac56f31f23779ba0c8c377d575bff58f3d1791f Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Thu, 16 Apr 2026 05:51:36 +0300 Subject: [PATCH 09/34] Added task 3736 --- .../Solution.java | 17 +++++++ .../readme.md | 45 +++++++++++++++++++ .../SolutionTest.java | 18 ++++++++ 3 files changed, 80 insertions(+) create mode 100644 src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/Solution.java create mode 100644 src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/readme.md create mode 100644 src/test/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/Solution.java b/src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/Solution.java new file mode 100644 index 000000000..3fd69621d --- /dev/null +++ b/src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/Solution.java @@ -0,0 +1,17 @@ +package g3701_3800.s3736_minimum_moves_to_equal_array_elements_iii; + +// #Easy #Array #Math #Biweekly_Contest_169 #2026_04_15_Time_1_ms_(99.59%)_Space_46.18_MB_(89.25%) + +public class Solution { + public int minMoves(int[] nums) { + int max = Integer.MIN_VALUE; + int sum = 0; + for (int num : nums) { + sum += num; + if (num > max) { + max = num; + } + } + return max * nums.length - sum; + } +} diff --git a/src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/readme.md b/src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/readme.md new file mode 100644 index 000000000..a24bf08d8 --- /dev/null +++ b/src/main/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/readme.md @@ -0,0 +1,45 @@ +3736\. Minimum Moves to Equal Array Elements III + +Easy + +You are given an integer array `nums`. + +In one move, you may **increase** the value of any single element `nums[i]` by 1. + +Return the **minimum total** number of **moves** required so that all elements in `nums` become **equal**. + +**Example 1:** + +**Input:** nums = [2,1,3] + +**Output:** 3 + +**Explanation:** + +To make all elements equal: + +* Increase `nums[0] = 2` by 1 to make it 3. +* Increase `nums[1] = 1` by 1 to make it 2. +* Increase `nums[1] = 2` by 1 to make it 3. + +Now, all elements of `nums` are equal to 3. The minimum total moves is `3`. + +**Example 2:** + +**Input:** nums = [4,4,5] + +**Output:** 2 + +**Explanation:** + +To make all elements equal: + +* Increase `nums[0] = 4` by 1 to make it 5. +* Increase `nums[1] = 4` by 1 to make it 5. + +Now, all elements of `nums` are equal to 5. The minimum total moves is `2`. + +**Constraints:** + +* `1 <= nums.length <= 100` +* `1 <= nums[i] <= 100` \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/SolutionTest.java b/src/test/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/SolutionTest.java new file mode 100644 index 000000000..383e6edae --- /dev/null +++ b/src/test/java/g3701_3800/s3736_minimum_moves_to_equal_array_elements_iii/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3736_minimum_moves_to_equal_array_elements_iii; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minMoves() { + assertThat(new Solution().minMoves(new int[] {2, 1, 3}), equalTo(3)); + } + + @Test + void minMoves2() { + assertThat(new Solution().minMoves(new int[] {4, 4, 5}), equalTo(2)); + } +} From 804e829e6c1e7a7202dbf5e48a6eae187b6015bb Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 09:40:23 +0300 Subject: [PATCH 10/34] Added task 3754 --- .../Solution.java | 32 ++++++++++++++++ .../readme.md | 38 +++++++++++++++++++ .../SolutionTest.java | 18 +++++++++ 3 files changed, 88 insertions(+) create mode 100644 src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/Solution.java create mode 100644 src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/readme.md create mode 100644 src/test/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/Solution.java b/src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/Solution.java new file mode 100644 index 000000000..679438891 --- /dev/null +++ b/src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/Solution.java @@ -0,0 +1,32 @@ +package g3701_3800.s3754_concatenate_non_zero_digits_and_multiply_by_sum_i; + +// #Easy #Math #Mid_Level #Weekly_Contest_477 +// #2026_04_25_Time_1_ms_(100.00%)_Space_42.50_MB_(73.85%) + +public class Solution { + public long sumAndMultiply(int n) { + int newNum = 0; + int y = Math.abs(n); + while (y > 0) { + int rem = y % 10; + if (rem != 0) { + newNum = newNum * 10 + rem; + } + y /= 10; + } + int temp = 0; + while (newNum > 0) { + int rem = newNum % 10; + temp = temp * 10 + rem; + newNum /= 10; + } + int x = temp; + long sum = 0; + while (temp > 0) { + int rem = temp % 10; + sum += rem; + temp /= 10; + } + return sum * x; + } +} diff --git a/src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/readme.md b/src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/readme.md new file mode 100644 index 000000000..636cdd934 --- /dev/null +++ b/src/main/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/readme.md @@ -0,0 +1,38 @@ +3754\. Concatenate Non-Zero Digits and Multiply by Sum I + +Easy + +You are given an integer `n`. + +Form a new integer `x` by concatenating all the **non-zero digits** of `n` in their original order. If there are no **non-zero** digits, `x = 0`. + +Let `sum` be the **sum of digits** in `x`. + +Return an integer representing the value of `x * sum`. + +**Example 1:** + +**Input:** n = 10203004 + +**Output:** 12340 + +**Explanation:** + +* The non-zero digits are 1, 2, 3, and 4. Thus, `x = 1234`. +* The sum of digits is `sum = 1 + 2 + 3 + 4 = 10`. +* Therefore, the answer is `x * sum = 1234 * 10 = 12340`. + +**Example 2:** + +**Input:** n = 1000 + +**Output:** 1 + +**Explanation:** + +* The non-zero digit is 1, so `x = 1` and `sum = 1`. +* Therefore, the answer is `x * sum = 1 * 1 = 1`. + +**Constraints:** + +* 0 <= n <= 109 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/SolutionTest.java b/src/test/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/SolutionTest.java new file mode 100644 index 000000000..3b1c33b2c --- /dev/null +++ b/src/test/java/g3701_3800/s3754_concatenate_non_zero_digits_and_multiply_by_sum_i/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3754_concatenate_non_zero_digits_and_multiply_by_sum_i; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void sumAndMultiply() { + assertThat(new Solution().sumAndMultiply(10203004), equalTo(12340L)); + } + + @Test + void sumAndMultiply2() { + assertThat(new Solution().sumAndMultiply(1000), equalTo(1L)); + } +} From e5e0a8343627f80789e35e5ea88c72826f891784 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 11:12:05 +0300 Subject: [PATCH 11/34] Added task 3755 --- .../Solution.java | 30 ++++++++++++++ .../readme.md | 40 +++++++++++++++++++ .../SolutionTest.java | 20 ++++++++++ 3 files changed, 90 insertions(+) create mode 100644 src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/Solution.java create mode 100644 src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md create mode 100644 src/test/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/Solution.java b/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/Solution.java new file mode 100644 index 000000000..18833f611 --- /dev/null +++ b/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/Solution.java @@ -0,0 +1,30 @@ +package g3701_3800.s3755_find_maximum_balanced_xor_subarray_length; + +// #Medium #Array #Hash_Table #Bit_Manipulation #Prefix_Sum #Senior #Weekly_Contest_477 +// #2026_04_25_Time_91_ms_(98.50%)_Space_256.08_MB_(93.23%) + +import java.util.HashMap; +import java.util.Map; + +public class Solution { + public int maxBalancedSubarray(int[] nums) { + int n = nums.length; + int ans = 0; + int xor = 0; + int diff = n; + Map pos = new HashMap<>(n + 1, 1); + pos.put((long) xor << 20 | diff, -1); + for (int i = 0; i < n; i++) { + xor ^= nums[i]; + diff += nums[i] % 2 != 0 ? 1 : -1; + long key = (long) xor << 20 | diff; + Integer j = pos.get(key); + if (j != null) { + ans = Math.max(ans, i - j); + } else { + pos.put(key, i); + } + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md b/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md new file mode 100644 index 000000000..6ca14238e --- /dev/null +++ b/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md @@ -0,0 +1,40 @@ +3755\. Find Maximum Balanced XOR Subarray Length + +Medium + +Given an integer array `nums`, return the **length** of the **longest **non-empty subarrays**** that has a bitwise XOR of zero and contains an **equal** number of **even** and **odd** numbers. If no such subarray exists, return 0. + +**Example 1:** + +**Input:** nums = [3,1,3,2,0] + +**Output:** 4 + +**Explanation:** + +The subarray `[1, 3, 2, 0]` has bitwise XOR `1 XOR 3 XOR 2 XOR 0 = 0` and contains 2 even and 2 odd numbers. + +**Example 2:** + +**Input:** nums = [3,2,8,5,4,14,9,15] + +**Output:** 8 + +**Explanation:** + +The whole array has bitwise XOR `0` and contains 4 even and 4 odd numbers. + +**Example 3:** + +**Input:** nums = [0] + +**Output:** 0 + +**Explanation:** + +No non-empty subarray satisfies both conditions. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 0 <= nums[i] <= 109 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/SolutionTest.java b/src/test/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/SolutionTest.java new file mode 100644 index 000000000..eac7b7c92 --- /dev/null +++ b/src/test/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/SolutionTest.java @@ -0,0 +1,20 @@ +package g3701_3800.s3755_find_maximum_balanced_xor_subarray_length; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maxBalancedSubarray() { + assertThat(new Solution().maxBalancedSubarray(new int[] {3, 1, 3, 2, 0}), equalTo(4)); + } + + @Test + void maxBalancedSubarray2() { + assertThat( + new Solution().maxBalancedSubarray(new int[] {3, 2, 8, 5, 4, 14, 9, 15}), + equalTo(8)); + } +} From 142cde6fd8c8e4c1683c5e43631fa321dd42ab3a Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 12:04:50 +0300 Subject: [PATCH 12/34] Upgrade GitHub Actions to checkout@v5 and setup-java@v5 --- .github/workflows/maven.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a27e8cc36..4632ab757 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -17,11 +17,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'corretto' java-version: '17' @@ -44,11 +44,11 @@ jobs: runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'corretto' java-version: '17' @@ -62,11 +62,11 @@ jobs: runs-on: macOS-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'corretto' java-version: '17' @@ -78,11 +78,11 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'corretto' java-version: '17' From bd16cf56c273d9d5e0f39b2f263de9135b3a5931 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 12:05:06 +0300 Subject: [PATCH 13/34] Added task 3756 --- .../Solution.java | 38 +++++++++++++++++++ .../readme.md | 1 + .../SolutionTest.java | 29 ++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java create mode 100644 src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/readme.md create mode 100644 src/test/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java b/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java new file mode 100644 index 000000000..f6471d394 --- /dev/null +++ b/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java @@ -0,0 +1,38 @@ +package g3701_3800.s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii; + +// #Medium #String #Math #Prefix_Sum #Weekly_Contest_477 #Staff +// #2026_04_25_Time_14_ms_(100.00%)_Space_131.16_MB_(32.94%) + +public class Solution { + private static final long MOD = 1_000_000_007; + + public int[] sumAndMultiply(String s, int[][] queries) { + int m = s.length(); + long[] p = new long[m + 1]; + long[] sum = new long[m + 1]; + int[] cnt = new int[m + 1]; + long[] pow10 = new long[m + 1]; + pow10[0] = 1; + for (int i = 0; i < m; i++) { + int d = s.charAt(i) - '0'; + if (d != 0) { + p[i + 1] = (p[i] * 10 + d) % MOD; + } else { + p[i + 1] = p[i]; + } + sum[i + 1] = sum[i] + d; + cnt[i + 1] = cnt[i] + (d != 0 ? 1 : 0); + pow10[i + 1] = pow10[i] * 10 % MOD; + } + int[] ans = new int[queries.length]; + for (int i = 0; i < queries.length; i++) { + int l = queries[i][0]; + int r = queries[i][1]; + int k = cnt[r + 1] - cnt[l]; + long x = (p[r + 1] - p[l] * pow10[k] % MOD + MOD) % MOD; + long digitSum = sum[r + 1] - sum[l]; + ans[i] = (int) (x * digitSum % MOD); + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/readme.md b/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/readme.md new file mode 100644 index 000000000..2a409811d --- /dev/null +++ b/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/readme.md @@ -0,0 +1 @@ +3756\. \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/SolutionTest.java b/src/test/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/SolutionTest.java new file mode 100644 index 000000000..1d6dca34b --- /dev/null +++ b/src/test/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/SolutionTest.java @@ -0,0 +1,29 @@ +package g3701_3800.s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void sumAndMultiply() { + assertThat( + new Solution().sumAndMultiply("10203004", new int[][] {{0, 7}, {1, 3}, {4, 6}}), + equalTo(new int[] {12340, 4, 9})); + } + + @Test + void sumAndMultiply2() { + assertThat( + new Solution().sumAndMultiply("1000", new int[][] {{0, 3}, {1, 1}}), + equalTo(new int[] {1, 0})); + } + + @Test + void sumAndMultiply3() { + assertThat( + new Solution().sumAndMultiply("9876543210", new int[][] {{0, 9}}), + equalTo(new int[] {444444137})); + } +} From 6b74c45fb1e9c11fec0f507fdbdc276600adfcb8 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 13:48:48 +0300 Subject: [PATCH 14/34] Added task 3757 --- .../Solution.java | 65 ++++++++++++++++ .../readme.md | 78 +++++++++++++++++++ .../SolutionTest.java | 28 +++++++ 3 files changed, 171 insertions(+) create mode 100644 src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java create mode 100644 src/main/java/g3701_3800/s3757_number_of_effective_subsequences/readme.md create mode 100644 src/test/java/g3701_3800/s3757_number_of_effective_subsequences/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java b/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java new file mode 100644 index 000000000..e85b29623 --- /dev/null +++ b/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java @@ -0,0 +1,65 @@ +package g3701_3800.s3757_number_of_effective_subsequences; + +// #Hard #Array #Dynamic_Programming #Math #Bit_Manipulation #Combinatorics #Weekly_Contest_477 +// #Senior_Staff #2026_04_25_Time_128_ms_(95.71%)_Space_85.91_MB_(18.57%) + +public class Solution { + private static final int MOD = 1_000_000_007; + + public int countEffective(int[] nums) { + int n = nums.length; + int t = 0; + for (int v : nums) { + t |= v; + } + if (t == 0) { + return 0; + } + int[] bits = new int[20]; + int m = 0; + for (int b = 0; b < 20; ++b) { + if (((t >> b) & 1) != 0) { + bits[m++] = b; + } + } + int s = 1 << m; + int[] freq = new int[s]; + for (int v : nums) { + int m1 = 0; + for (int j = 0; j < m; ++j) { + if (((v >> bits[j]) & 1) != 0) { + m1 |= 1 << j; + } + } + freq[m1]++; + } + int[] f = new int[s]; + System.arraycopy(freq, 0, f, 0, s); + for (int i = 0; i < m; ++i) { + for (int mask = 0; mask < s; ++mask) { + if ((mask & (1 << i)) != 0) { + f[mask] += f[mask ^ (1 << i)]; + } + } + } + long[] p2 = new long[n + 1]; + p2[0] = 1; + for (int i = 1; i <= n; ++i) { + p2[i] = (p2[i - 1] << 1) % MOD; + } + long ans = 0; + int all = s - 1; + for (int bmask = 1; bmask < s; ++bmask) { + int comp = all ^ bmask; + int cnt = f[comp]; + long add = p2[cnt]; + if (Integer.bitCount(bmask) % 2 == 1) { + ans = (ans + add) % MOD; + } else { + ans = (ans - add) % MOD; + } + } + ans = (ans % MOD + MOD) % MOD; + return (int) ans; + } +} diff --git a/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/readme.md b/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/readme.md new file mode 100644 index 000000000..910d9460b --- /dev/null +++ b/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/readme.md @@ -0,0 +1,78 @@ +3757\. Number of Effective Subsequences + +Hard + +You are given an integer array `nums`. + +The **strength** of the array is defined as the **bitwise OR** of all its elements. + +A **subsequence** is considered **effective** if removing that subsequence **strictly decreases** the strength of the remaining elements. + +Return the number of **effective subsequences** in `nums`. Since the answer may be large, return it **modulo** 109 + 7. + +The bitwise OR of an empty array is 0. + +**Example 1:** + +**Input:** nums = [1,2,3] + +**Output:** 3 + +**Explanation:** + +* The Bitwise OR of the array is `1 OR 2 OR 3 = 3`. +* Subsequences that are effective are: + * `[1, 3]`: The remaining element `[2]` has a Bitwise OR of 2. + * `[2, 3]`: The remaining element `[1]` has a Bitwise OR of 1. + * `[1, 2, 3]`: The remaining elements `[]` have a Bitwise OR of 0. +* Thus, the total number of effective subsequences is 3. + +**Example 2:** + +**Input:** nums = [7,4,6] + +**Output:** 4 + +**Explanation:** + +* The Bitwise OR of the array is `7 OR 4 OR 6 = 7`. +* Subsequences that are effective are: + * `[7]`: The remaining elements `[4, 6]` have a Bitwise OR of 6. + * `[7, 4]`: The remaining element `[6]` has a Bitwise OR of 6. + * `[7, 6]`: The remaining element `[4]` has a Bitwise OR of 4. + * `[7, 4, 6]`: The remaining elements `[]` have a Bitwise OR of 0. +* Thus, the total number of effective subsequences is 4. + +**Example 3:** + +**Input:** nums = [8,8] + +**Output:** 1 + +**Explanation:** + +* The Bitwise OR of the array is `8 OR 8 = 8`. +* Only the subsequence `[8, 8]` is effective since removing it leaves `[]` which has a Bitwise OR of 0. +* Thus, the total number of effective subsequences is 1. + +**Example 4:** + +**Input:** nums = [2,2,1] + +**Output:** 5 + +**Explanation:** + +* The Bitwise OR of the array is `2 OR 2 OR 1 = 3`. +* Subsequences that are effective are: + * `[1]`: The remaining elements `[2, 2]` have a Bitwise OR of 2. + * `[2, 1]` (using `nums[0]`, `nums[2]`): The remaining element `[2]` has a Bitwise OR of 2. + * `[2, 1]` (using `nums[1]`, `nums[2]`): The remaining element `[2]` has a Bitwise OR of 2. + * `[2, 2]`: The remaining element `[1]` has a Bitwise OR of 1. + * `[2, 2, 1]`: The remaining elements `[]` have a Bitwise OR of 0. +* Thus, the total number of effective subsequences is 5. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 106 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3757_number_of_effective_subsequences/SolutionTest.java b/src/test/java/g3701_3800/s3757_number_of_effective_subsequences/SolutionTest.java new file mode 100644 index 000000000..dcad582d8 --- /dev/null +++ b/src/test/java/g3701_3800/s3757_number_of_effective_subsequences/SolutionTest.java @@ -0,0 +1,28 @@ +package g3701_3800.s3757_number_of_effective_subsequences; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countEffective() { + assertThat(new Solution().countEffective(new int[] {1, 2, 3}), equalTo(3)); + } + + @Test + void countEffective2() { + assertThat(new Solution().countEffective(new int[] {7, 4, 6}), equalTo(4)); + } + + @Test + void countEffective3() { + assertThat(new Solution().countEffective(new int[] {8, 8}), equalTo(1)); + } + + @Test + void countEffective4() { + assertThat(new Solution().countEffective(new int[] {2, 2, 1}), equalTo(5)); + } +} From 2639fae16782bb8e31a23ee5da362c4283a56d58 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 14:59:30 +0300 Subject: [PATCH 15/34] Added task 3759 --- .../Solution.java | 24 +++++++++++++ .../readme.md | 36 +++++++++++++++++++ .../SolutionTest.java | 23 ++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/Solution.java create mode 100644 src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/readme.md create mode 100644 src/test/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/Solution.java b/src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/Solution.java new file mode 100644 index 000000000..e06331f6e --- /dev/null +++ b/src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/Solution.java @@ -0,0 +1,24 @@ +package g3701_3800.s3759_count_elements_with_at_least_k_greater_values; + +// #Medium #Array #Sorting #Binary_Search #Divide_and_Conquer #Quickselect #Senior +// #Weekly_Contest_478 #2026_04_25_Time_40_ms_(96.15%)_Space_134.18_MB_(73.08%) + +import java.util.Arrays; + +public class Solution { + public int countElements(int[] nums, int k) { + if (k == 0) { + return nums.length; + } + Arrays.sort(nums); + int i = nums.length - k; + int n = nums[i]; + if (nums[0] == n) { + return 0; + } + while (n == nums[i]) { + i--; + } + return i + 1; + } +} diff --git a/src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/readme.md b/src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/readme.md new file mode 100644 index 000000000..0acf1ac95 --- /dev/null +++ b/src/main/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/readme.md @@ -0,0 +1,36 @@ +3759\. Count Elements With at Least K Greater Values + +Medium + +You are given an integer array `nums` of length `n` and an integer `k`. + +An element in `nums` is said to be **qualified** if there exist **at least** `k` elements in the array that are **strictly greater** than it. + +Return an integer denoting the total number of qualified elements in `nums`. + +**Example 1:** + +**Input:** nums = [3,1,2], k = 1 + +**Output:** 2 + +**Explanation:** + +The elements 1 and 2 each have at least `k = 1` element greater than themselves. + No element is greater than 3. Therefore, the answer is 2. + +**Example 2:** + +**Input:** nums = [5,5,5], k = 2 + +**Output:** 0 + +**Explanation:** + +Since all elements are equal to 5, no element is greater than the other. Therefore, the answer is 0. + +**Constraints:** + +* 1 <= n == nums.length <= 105 +* 1 <= nums[i] <= 109 +* `0 <= k < n` \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/SolutionTest.java b/src/test/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/SolutionTest.java new file mode 100644 index 000000000..f07f99274 --- /dev/null +++ b/src/test/java/g3701_3800/s3759_count_elements_with_at_least_k_greater_values/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3759_count_elements_with_at_least_k_greater_values; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countElements() { + assertThat(new Solution().countElements(new int[] {3, 1, 2}, 1), equalTo(2)); + } + + @Test + void countElements2() { + assertThat(new Solution().countElements(new int[] {5, 5, 5}, 2), equalTo(0)); + } + + @Test + void countElements3() { + assertThat(new Solution().countElements(new int[] {5, 5, 5}, 0), equalTo(3)); + } +} From dd7709a765e542296a356477cd94a96071f1f974 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sat, 25 Apr 2026 17:21:20 +0300 Subject: [PATCH 16/34] Improved tasks 3756, 3757 --- .../Solution.java | 2 +- .../s3757_number_of_effective_subsequences/Solution.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java b/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java index f6471d394..d7805b14e 100644 --- a/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java +++ b/src/main/java/g3701_3800/s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii/Solution.java @@ -1,6 +1,6 @@ package g3701_3800.s3756_concatenate_non_zero_digits_and_multiply_by_sum_ii; -// #Medium #String #Math #Prefix_Sum #Weekly_Contest_477 #Staff +// #Medium #String #Math #Prefix_Sum #Staff #Weekly_Contest_477 // #2026_04_25_Time_14_ms_(100.00%)_Space_131.16_MB_(32.94%) public class Solution { diff --git a/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java b/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java index e85b29623..76feb9358 100644 --- a/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java +++ b/src/main/java/g3701_3800/s3757_number_of_effective_subsequences/Solution.java @@ -1,7 +1,7 @@ package g3701_3800.s3757_number_of_effective_subsequences; -// #Hard #Array #Dynamic_Programming #Math #Bit_Manipulation #Combinatorics #Weekly_Contest_477 -// #Senior_Staff #2026_04_25_Time_128_ms_(95.71%)_Space_85.91_MB_(18.57%) +// #Hard #Array #Dynamic_Programming #Math #Bit_Manipulation #Combinatorics #Senior_Staff +// #Weekly_Contest_477 #2026_04_25_Time_128_ms_(95.71%)_Space_85.91_MB_(18.57%) public class Solution { private static final int MOD = 1_000_000_007; From 1e229032b4b6affe71496faf5b4f039697e5faad Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sun, 26 Apr 2026 08:24:39 +0300 Subject: [PATCH 17/34] Added task 3748 --- .../Solution.java | 43 +++++++++++++++ .../s3748_count_stable_subarrays/readme.md | 55 +++++++++++++++++++ .../SolutionTest.java | 24 ++++++++ 3 files changed, 122 insertions(+) create mode 100644 src/main/java/g3701_3800/s3748_count_stable_subarrays/Solution.java create mode 100644 src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md create mode 100644 src/test/java/g3701_3800/s3748_count_stable_subarrays/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3748_count_stable_subarrays/Solution.java b/src/main/java/g3701_3800/s3748_count_stable_subarrays/Solution.java new file mode 100644 index 000000000..cc0642ada --- /dev/null +++ b/src/main/java/g3701_3800/s3748_count_stable_subarrays/Solution.java @@ -0,0 +1,43 @@ +package g3701_3800.s3748_count_stable_subarrays; + +// #Hard #Array #Binary_Search #Prefix_Sum #Senior_Staff #Weekly_Contest_476 +// #2026_04_26_Time_9_ms_(100.00%)_Space_183.68_MB_(43.30%) + +public class Solution { + public long[] countStableSubarrays(int[] nums, int[][] queries) { + int n = nums.length; + long[] preSum = new long[n + 1]; + int[] idx = new int[n]; + int[] end = new int[n]; + int cnt = 0; + int prv = -1; + for (int i = 0; i < n; i++) { + if (nums[i] >= prv) { + cnt++; + } else { + cnt = 1; + } + prv = nums[i]; + preSum[i + 1] = preSum[i] + cnt; + idx[i] = cnt - 1; + } + end[n - 1] = n - 1; + for (int i = n - 2; i >= 0; i--) { + if (idx[i] + 1 == idx[i + 1]) { + end[i] = end[i + 1]; + } else { + end[i] = i; + } + } + long[] ans = new long[queries.length]; + for (int l = 0; l < queries.length; l++) { + int i = queries[l][0]; + int j = queries[l][1]; + long res = preSum[j + 1] - preSum[i]; + int endIdx = Math.min(end[i], j); + res -= (long) (endIdx - i + 1) * idx[i]; + ans[l] = res; + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md b/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md new file mode 100644 index 000000000..ed388d19a --- /dev/null +++ b/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md @@ -0,0 +1,55 @@ +3748\. Count Stable Subarrays + +Hard + +You are given an integer array `nums`. + +A ****non-empty subarrays**** of `nums` is called **stable** if it contains **no inversions**, i.e., there is no pair of indices `i < j` such that `nums[i] > nums[j]`. + +You are also given a **2D integer array** `queries` of length `q`, where each queries[i] = [li, ri] represents a query. For each query [li, ri], compute the number of **stable subarrays** that lie entirely within the segment nums[li..ri]. + +Return an integer array `ans` of length `q`, where `ans[i]` is the answer to the ith query. + +**Note**: + +* A single element subarray is considered stable. + +**Example 1:** + +**Input:** nums = [3,1,2], queries = [[0,1],[1,2],[0,2]] + +**Output:** [2,3,4] + +**Explanation:** + +* For `queries[0] = [0, 1]`, the subarray is `[nums[0], nums[1]] = [3, 1]`. + * The stable subarrays are `[3]` and `[1]`. The total number of stable subarrays is 2. +* For `queries[1] = [1, 2]`, the subarray is `[nums[1], nums[2]] = [1, 2]`. + * The stable subarrays are `[1]`, `[2]`, and `[1, 2]`. The total number of stable subarrays is 3. +* For `queries[2] = [0, 2]`, the subarray is `[nums[0], nums[1], nums[2]] = [3, 1, 2]`. + * The stable subarrays are `[3]`, `[1]`, `[2]`, and `[1, 2]`. The total number of stable subarrays is 4. + +Thus, `ans = [2, 3, 4]`. + +**Example 2:** + +**Input:** nums = [2,2], queries = [[0,1],[0,0]] + +**Output:** [3,1] + +**Explanation:** + +* For `queries[0] = [0, 1]`, the subarray is `[nums[0], nums[1]] = [2, 2]`. + * The stable subarrays are `[2]`, `[2]`, and `[2, 2]`. The total number of stable subarrays is 3. +* For `queries[1] = [0, 0]`, the subarray is `[nums[0]] = [2]`. + * The stable subarray is `[2]`. The total number of stable subarrays is 1. + +Thus, `ans = [3, 1]`. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 105 +* 1 <= queries.length <= 105 +* queries[i] = [li, ri] +* 0 <= li <= ri <= nums.length - 1 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3748_count_stable_subarrays/SolutionTest.java b/src/test/java/g3701_3800/s3748_count_stable_subarrays/SolutionTest.java new file mode 100644 index 000000000..0e9447168 --- /dev/null +++ b/src/test/java/g3701_3800/s3748_count_stable_subarrays/SolutionTest.java @@ -0,0 +1,24 @@ +package g3701_3800.s3748_count_stable_subarrays; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countStableSubarrays() { + assertThat( + new Solution() + .countStableSubarrays( + new int[] {3, 1, 2}, new int[][] {{0, 1}, {1, 2}, {0, 2}}), + equalTo(new long[] {2L, 3L, 4L})); + } + + @Test + void countStableSubarrays2() { + assertThat( + new Solution().countStableSubarrays(new int[] {2, 2}, new int[][] {{0, 1}, {0, 0}}), + equalTo(new long[] {3L, 1L})); + } +} From 787946c0cdf6754ba85e159c646504fe53d17c83 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sun, 26 Apr 2026 08:39:12 +0300 Subject: [PATCH 18/34] Improved readmes --- .../readme.md | 2 +- .../readme.md | 2 +- .../readme.md | 2 +- .../readme.md | 2 +- .../s3547_maximum_sum_of_edge_values_in_a_graph/readme.md | 2 +- .../g3501_3600/s3556_sum_of_largest_prime_substrings/readme.md | 2 +- .../readme.md | 2 +- .../readme.md | 2 +- .../readme.md | 2 +- .../s3585_find_weighted_median_node_in_tree/readme.md | 2 +- .../g3501_3600/s3599_partition_array_to_minimize_xor/readme.md | 2 +- .../s3615_longest_palindromic_path_in_graph/readme.md | 2 +- .../g3701_3800/s3703_remove_k_balanced_substrings/readme.md | 2 +- .../readme.md | 2 +- src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md | 2 +- .../s3755_find_maximum_balanced_xor_subarray_length/readme.md | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/g2001_2100/s2086_minimum_number_of_buckets_required_to_collect_rainwater_from_houses/readme.md b/src/main/java/g2001_2100/s2086_minimum_number_of_buckets_required_to_collect_rainwater_from_houses/readme.md index 7bf087d94..8eaaf30b7 100644 --- a/src/main/java/g2001_2100/s2086_minimum_number_of_buckets_required_to_collect_rainwater_from_houses/readme.md +++ b/src/main/java/g2001_2100/s2086_minimum_number_of_buckets_required_to_collect_rainwater_from_houses/readme.md @@ -2,7 +2,7 @@ Medium -You are given a **0-index****ed** string `street`. Each character in `street` is either `'H'` representing a house or `'.'` representing an empty space. +You are given a **0-indexed** string `street`. Each character in `street` is either `'H'` representing a house or `'.'` representing an empty space. You can place buckets on the **empty spaces** to collect rainwater that falls from the adjacent houses. The rainwater from a house at index `i` is collected if a bucket is placed at index `i - 1` **and/or** index `i + 1`. A single bucket, if placed adjacent to two houses, can collect the rainwater from **both** houses. diff --git a/src/main/java/g2801_2900/s2862_maximum_element_sum_of_a_complete_subset_of_indices/readme.md b/src/main/java/g2801_2900/s2862_maximum_element_sum_of_a_complete_subset_of_indices/readme.md index ceae0b536..f13c5d4a1 100644 --- a/src/main/java/g2801_2900/s2862_maximum_element_sum_of_a_complete_subset_of_indices/readme.md +++ b/src/main/java/g2801_2900/s2862_maximum_element_sum_of_a_complete_subset_of_indices/readme.md @@ -2,7 +2,7 @@ Hard -You are given a **1****\-indexed** array `nums` of `n` integers. +You are given a **1\-indexed** array `nums` of `n` integers. A set of numbers is **complete** if the product of every pair of its elements is a perfect square. diff --git a/src/main/java/g2801_2900/s2871_split_array_into_maximum_number_of_subarrays/readme.md b/src/main/java/g2801_2900/s2871_split_array_into_maximum_number_of_subarrays/readme.md index 2aa845374..30b80a2b8 100644 --- a/src/main/java/g2801_2900/s2871_split_array_into_maximum_number_of_subarrays/readme.md +++ b/src/main/java/g2801_2900/s2871_split_array_into_maximum_number_of_subarrays/readme.md @@ -8,7 +8,7 @@ We define the score of subarray `nums[l..r]` such that `l <= r` as `nums[l] AND Consider splitting the array into one or more subarrays such that the following conditions are satisfied: -* **E****ach** element of the array belongs to **exactly** one subarray. +* **Each** element of the array belongs to **exactly** one subarray. * The sum of scores of the subarrays is the **minimum** possible. Return _the **maximum** number of subarrays in a split that satisfies the conditions above._ diff --git a/src/main/java/g3501_3600/s3509_maximum_product_of_subsequences_with_an_alternating_sum_equal_to_k/readme.md b/src/main/java/g3501_3600/s3509_maximum_product_of_subsequences_with_an_alternating_sum_equal_to_k/readme.md index 31ec68f81..8b99b69fa 100644 --- a/src/main/java/g3501_3600/s3509_maximum_product_of_subsequences_with_an_alternating_sum_equal_to_k/readme.md +++ b/src/main/java/g3501_3600/s3509_maximum_product_of_subsequences_with_an_alternating_sum_equal_to_k/readme.md @@ -2,7 +2,7 @@ Hard -You are given an integer array `nums` and two integers, `k` and `limit`. Your task is to find a non-empty ****subsequences**** of `nums` that: +You are given an integer array `nums` and two integers, `k` and `limit`. Your task is to find a non-empty **subsequences** of `nums` that: * Has an **alternating sum** equal to `k`. * **Maximizes** the product of all its numbers _without the product exceeding_ `limit`. diff --git a/src/main/java/g3501_3600/s3547_maximum_sum_of_edge_values_in_a_graph/readme.md b/src/main/java/g3501_3600/s3547_maximum_sum_of_edge_values_in_a_graph/readme.md index f182f4a87..9e863ce2f 100644 --- a/src/main/java/g3501_3600/s3547_maximum_sum_of_edge_values_in_a_graph/readme.md +++ b/src/main/java/g3501_3600/s3547_maximum_sum_of_edge_values_in_a_graph/readme.md @@ -2,7 +2,7 @@ Hard -You are given an **und****irected** graph of `n` nodes, numbered from `0` to `n - 1`. Each node is connected to **at most** 2 other nodes. +You are given an **undirected** graph of `n` nodes, numbered from `0` to `n - 1`. Each node is connected to **at most** 2 other nodes. The graph consists of `m` edges, represented by a 2D array `edges`, where edges[i] = [ai, bi] indicates that there is an edge between nodes ai and bi. diff --git a/src/main/java/g3501_3600/s3556_sum_of_largest_prime_substrings/readme.md b/src/main/java/g3501_3600/s3556_sum_of_largest_prime_substrings/readme.md index c719d6374..9c21f6b99 100644 --- a/src/main/java/g3501_3600/s3556_sum_of_largest_prime_substrings/readme.md +++ b/src/main/java/g3501_3600/s3556_sum_of_largest_prime_substrings/readme.md @@ -2,7 +2,7 @@ Medium -Given a string `s`, find the sum of the **3 largest unique prime numbers** that can be formed using any of its ****substring****. +Given a string `s`, find the sum of the **3 largest unique prime numbers** that can be formed using any of its **substring**. Return the **sum** of the three largest unique prime numbers that can be formed. If fewer than three exist, return the sum of **all** available primes. If no prime numbers can be formed, return 0. diff --git a/src/main/java/g3501_3600/s3557_find_maximum_number_of_non_intersecting_substrings/readme.md b/src/main/java/g3501_3600/s3557_find_maximum_number_of_non_intersecting_substrings/readme.md index 6ba4e1b08..d419545af 100644 --- a/src/main/java/g3501_3600/s3557_find_maximum_number_of_non_intersecting_substrings/readme.md +++ b/src/main/java/g3501_3600/s3557_find_maximum_number_of_non_intersecting_substrings/readme.md @@ -4,7 +4,7 @@ Medium You are given a string `word`. -Return the **maximum** number of non-intersecting ****substring**** of word that are at **least** four characters long and start and end with the same letter. +Return the **maximum** number of non-intersecting **substring** of word that are at **least** four characters long and start and end with the same letter. **Example 1:** diff --git a/src/main/java/g3501_3600/s3579_minimum_steps_to_convert_string_with_operations/readme.md b/src/main/java/g3501_3600/s3579_minimum_steps_to_convert_string_with_operations/readme.md index daca34910..d5b602d88 100644 --- a/src/main/java/g3501_3600/s3579_minimum_steps_to_convert_string_with_operations/readme.md +++ b/src/main/java/g3501_3600/s3579_minimum_steps_to_convert_string_with_operations/readme.md @@ -4,7 +4,7 @@ Hard You are given two strings, `word1` and `word2`, of equal length. You need to transform `word1` into `word2`. -For this, divide `word1` into one or more **contiguous **substring****. For each substring `substr` you can perform the following operations: +For this, divide `word1` into one or more **contiguous substring**. For each substring `substr` you can perform the following operations: 1. **Replace:** Replace the character at any one index of `substr` with another lowercase English letter. diff --git a/src/main/java/g3501_3600/s3584_maximum_product_of_first_and_last_elements_of_a_subsequence/readme.md b/src/main/java/g3501_3600/s3584_maximum_product_of_first_and_last_elements_of_a_subsequence/readme.md index 45bcb13ad..00c6f7335 100644 --- a/src/main/java/g3501_3600/s3584_maximum_product_of_first_and_last_elements_of_a_subsequence/readme.md +++ b/src/main/java/g3501_3600/s3584_maximum_product_of_first_and_last_elements_of_a_subsequence/readme.md @@ -4,7 +4,7 @@ Medium You are given an integer array `nums` and an integer `m`. -Return the **maximum** product of the first and last elements of any ****subsequences**** of `nums` of size `m`. +Return the **maximum** product of the first and last elements of any **subsequences** of `nums` of size `m`. **Example 1:** diff --git a/src/main/java/g3501_3600/s3585_find_weighted_median_node_in_tree/readme.md b/src/main/java/g3501_3600/s3585_find_weighted_median_node_in_tree/readme.md index 69a344aa8..f0f50f109 100644 --- a/src/main/java/g3501_3600/s3585_find_weighted_median_node_in_tree/readme.md +++ b/src/main/java/g3501_3600/s3585_find_weighted_median_node_in_tree/readme.md @@ -32,7 +32,7 @@ Return an array `ans`, where `ans[j]` is the node index of the weighted median f **Output:** [1,0,2] -**E****xplanation:** +**Explanation:** ![](https://assets.leetcode.com/uploads/2025/05/26/screenshot-2025-05-26-at-193610.png) diff --git a/src/main/java/g3501_3600/s3599_partition_array_to_minimize_xor/readme.md b/src/main/java/g3501_3600/s3599_partition_array_to_minimize_xor/readme.md index baa25d57f..1970dbd8d 100644 --- a/src/main/java/g3501_3600/s3599_partition_array_to_minimize_xor/readme.md +++ b/src/main/java/g3501_3600/s3599_partition_array_to_minimize_xor/readme.md @@ -4,7 +4,7 @@ Medium You are given an integer array `nums` and an integer `k`. -Your task is to partition `nums` into `k` non-empty ****non-empty subarrays****. For each subarray, compute the bitwise **XOR** of all its elements. +Your task is to partition `nums` into `k` non-empty **non-empty subarrays**. For each subarray, compute the bitwise **XOR** of all its elements. Return the **minimum** possible value of the **maximum XOR** among these `k` subarrays. diff --git a/src/main/java/g3601_3700/s3615_longest_palindromic_path_in_graph/readme.md b/src/main/java/g3601_3700/s3615_longest_palindromic_path_in_graph/readme.md index b97e4d8dd..8f08afca3 100644 --- a/src/main/java/g3601_3700/s3615_longest_palindromic_path_in_graph/readme.md +++ b/src/main/java/g3601_3700/s3615_longest_palindromic_path_in_graph/readme.md @@ -16,7 +16,7 @@ Return the **maximum** possible length of a **palindrome** that can be formed by **Output:** 3 -**Exp****lanation:** +**Explanation:** ![](https://assets.leetcode.com/uploads/2025/06/13/screenshot-2025-06-13-at-230714.png) diff --git a/src/main/java/g3701_3800/s3703_remove_k_balanced_substrings/readme.md b/src/main/java/g3701_3800/s3703_remove_k_balanced_substrings/readme.md index 38de2746a..20a41ed5d 100644 --- a/src/main/java/g3701_3800/s3703_remove_k_balanced_substrings/readme.md +++ b/src/main/java/g3701_3800/s3703_remove_k_balanced_substrings/readme.md @@ -8,7 +8,7 @@ A **string** is **k-balanced** if it is **exactly** `k` **consecutive** `'('` fo For example, if `k = 3`, k-balanced is `"((()))"`. -You must **repeatedly** remove all **non-overlapping k-balanced **substring**** from `s`, and then join the remaining parts. Continue this process until no k-balanced **substring** exists. +You must **repeatedly** remove all **non-overlapping k-balanced substring** from `s`, and then join the remaining parts. Continue this process until no k-balanced **substring** exists. Return the final string after all possible removals. diff --git a/src/main/java/g3701_3800/s3729_count_distinct_subarrays_divisible_by_k_in_sorted_array/readme.md b/src/main/java/g3701_3800/s3729_count_distinct_subarrays_divisible_by_k_in_sorted_array/readme.md index 00d7143a4..59475dfc6 100644 --- a/src/main/java/g3701_3800/s3729_count_distinct_subarrays_divisible_by_k_in_sorted_array/readme.md +++ b/src/main/java/g3701_3800/s3729_count_distinct_subarrays_divisible_by_k_in_sorted_array/readme.md @@ -4,7 +4,7 @@ Hard You are given an integer array `nums` **sorted** in **non-descending** order and a positive integer `k`. -A ****non-empty subarrays**** of `nums` is **good** if the sum of its elements is **divisible** by `k`. +A **non-empty subarrays** of `nums` is **good** if the sum of its elements is **divisible** by `k`. Return an integer denoting the number of **distinct** **good** subarrays of `nums`. diff --git a/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md b/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md index ed388d19a..4f79bb6d2 100644 --- a/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md +++ b/src/main/java/g3701_3800/s3748_count_stable_subarrays/readme.md @@ -4,7 +4,7 @@ Hard You are given an integer array `nums`. -A ****non-empty subarrays**** of `nums` is called **stable** if it contains **no inversions**, i.e., there is no pair of indices `i < j` such that `nums[i] > nums[j]`. +A **non-empty subarrays** of `nums` is called **stable** if it contains **no inversions**, i.e., there is no pair of indices `i < j` such that `nums[i] > nums[j]`. You are also given a **2D integer array** `queries` of length `q`, where each queries[i] = [li, ri] represents a query. For each query [li, ri], compute the number of **stable subarrays** that lie entirely within the segment nums[li..ri]. diff --git a/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md b/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md index 6ca14238e..8b0b1129a 100644 --- a/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md +++ b/src/main/java/g3701_3800/s3755_find_maximum_balanced_xor_subarray_length/readme.md @@ -2,7 +2,7 @@ Medium -Given an integer array `nums`, return the **length** of the **longest **non-empty subarrays**** that has a bitwise XOR of zero and contains an **equal** number of **even** and **odd** numbers. If no such subarray exists, return 0. +Given an integer array `nums`, return the **length** of the **longest non-empty subarrays** that has a bitwise XOR of zero and contains an **equal** number of **even** and **odd** numbers. If no such subarray exists, return 0. **Example 1:** From a682b9f0bc10dab3beea5a1b968e1e6affb09e94 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sun, 26 Apr 2026 09:04:36 +0300 Subject: [PATCH 19/34] Added task 3750 --- .../Solution.java | 23 ++++++++++++ .../readme.md | 37 +++++++++++++++++++ .../SolutionTest.java | 18 +++++++++ 3 files changed, 78 insertions(+) create mode 100644 src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/Solution.java create mode 100644 src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/readme.md create mode 100644 src/test/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/Solution.java b/src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/Solution.java new file mode 100644 index 000000000..d38c3768f --- /dev/null +++ b/src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/Solution.java @@ -0,0 +1,23 @@ +package g3701_3800.s3750_minimum_number_of_flips_to_reverse_binary_string; + +// #Easy #String #Math #Two_Pointers #Bit_Manipulation #Mid_Level #Biweekly_Contest_170 +// #2026_04_26_Time_1_ms_(100.00%)_Space_42.88_MB_(49.74%) + +public class Solution { + public int minimumFlips(int n) { + int ans = 0; + int temp = n; + int l = 0; + int r = -1; + while (temp > 0) { + temp >>= 1; + r++; + } + while (l < r) { + ans += ((n >> l) & 1) ^ ((n >> r) & 1); + l++; + r--; + } + return 2 * ans; + } +} diff --git a/src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/readme.md b/src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/readme.md new file mode 100644 index 000000000..ee86cd457 --- /dev/null +++ b/src/main/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/readme.md @@ -0,0 +1,37 @@ +3750\. Minimum Number of Flips to Reverse Binary String + +Easy + +You are given a **positive** integer `n`. + +Let `s` be the **binary representation** of `n` without leading zeros. + +The **reverse** of a binary string `s` is obtained by writing the characters of `s` in the opposite order. + +You may flip any bit in `s` (change `0 → 1` or `1 → 0`). Each flip affects **exactly** one bit. + +Return the **minimum** number of flips required to make `s` equal to the reverse of its original form. + +**Example 1:** + +**Input:** n = 7 + +**Output:** 0 + +**Explanation:** + +The binary representation of 7 is `"111"`. Its reverse is also `"111"`, which is the same. Hence, no flips are needed. + +**Example 2:** + +**Input:** n = 10 + +**Output:** 4 + +**Explanation:** + +The binary representation of 10 is `"1010"`. Its reverse is `"0101"`. All four bits must be flipped to make them equal. Thus, the minimum number of flips required is 4. + +**Constraints:** + +* 1 <= n <= 109 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/SolutionTest.java b/src/test/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/SolutionTest.java new file mode 100644 index 000000000..fc7954354 --- /dev/null +++ b/src/test/java/g3701_3800/s3750_minimum_number_of_flips_to_reverse_binary_string/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3750_minimum_number_of_flips_to_reverse_binary_string; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minimumFlips() { + assertThat(new Solution().minimumFlips(7), equalTo(0)); + } + + @Test + void minimumFlips2() { + assertThat(new Solution().minimumFlips(10), equalTo(4)); + } +} From 6c33c0a02b4f042b5753a9498707fd0c57c68b63 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Sun, 26 Apr 2026 09:34:03 +0300 Subject: [PATCH 20/34] Added tasks 3751, 3752, 3753 --- .../Solution.java | 38 +++++++++ .../readme.md | 62 +++++++++++++++ .../Solution.java | 29 +++++++ .../readme.md | 54 +++++++++++++ .../Solution.java | 78 +++++++++++++++++++ .../readme.md | 62 +++++++++++++++ .../SolutionTest.java | 23 ++++++ .../SolutionTest.java | 18 +++++ .../SolutionTest.java | 23 ++++++ 9 files changed, 387 insertions(+) create mode 100644 src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/Solution.java create mode 100644 src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/readme.md create mode 100644 src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/Solution.java create mode 100644 src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/readme.md create mode 100644 src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/Solution.java create mode 100644 src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/readme.md create mode 100644 src/test/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/Solution.java b/src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/Solution.java new file mode 100644 index 000000000..0771e9db9 --- /dev/null +++ b/src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/Solution.java @@ -0,0 +1,38 @@ +package g3701_3800.s3751_total_waviness_of_numbers_in_range_i; + +// #Medium #Dynamic_Programming #Math #Enumeration #Senior #Biweekly_Contest_170 +// #2026_04_26_Time_11_ms_(98.18%)_Space_42.55_MB_(97.88%) + +public class Solution { + private int countpeakValley(int num) { + int lastdigit = num % 10; + int waiviness = 0; + int prevcurrent = -1; + num = num / 10; + while (num > 0) { + if (prevcurrent == -1) { + prevcurrent = num % 10; + num = num / 10; + continue; + } + int currvalue = num % 10; + if ((prevcurrent > currvalue && prevcurrent > lastdigit) + || (prevcurrent < currvalue && prevcurrent < lastdigit)) { + waiviness++; + } + lastdigit = prevcurrent; + prevcurrent = num % 10; + num = num / 10; + } + return waiviness; + } + + public int totalWaviness(int num1, int num2) { + int ans = 0; + for (int i = num1; i <= num2; i++) { + int l = countpeakValley(i); + ans = ans + l; + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/readme.md b/src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/readme.md new file mode 100644 index 000000000..df45379fa --- /dev/null +++ b/src/main/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/readme.md @@ -0,0 +1,62 @@ +3751\. Total Waviness of Numbers in Range I + +Medium + +You are given two integers `num1` and `num2` representing an **inclusive** range `[num1, num2]`. + +The **waviness** of a number is defined as the total count of its **peaks** and **valleys**: + +* A digit is a **peak** if it is **strictly greater** than both of its immediate neighbors. +* A digit is a **valley** if it is **strictly less** than both of its immediate neighbors. +* The first and last digits of a number **cannot** be peaks or valleys. +* Any number with fewer than 3 digits has a waviness of 0. + +Return the total sum of waviness for all numbers in the range `[num1, num2]`. + +**Example 1:** + +**Input:** num1 = 120, num2 = 130 + +**Output:** 3 + +**Explanation:** + +In the range `[120, 130]`: + +* `120`: middle digit 2 is a peak, waviness = 1. +* `121`: middle digit 2 is a peak, waviness = 1. +* `130`: middle digit 3 is a peak, waviness = 1. +* All other numbers in the range have a waviness of 0. + +Thus, total waviness is `1 + 1 + 1 = 3`. + +**Example 2:** + +**Input:** num1 = 198, num2 = 202 + +**Output:** 3 + +**Explanation:** + +In the range `[198, 202]`: + +* `198`: middle digit 9 is a peak, waviness = 1. +* `201`: middle digit 0 is a valley, waviness = 1. +* `202`: middle digit 0 is a valley, waviness = 1. +* All other numbers in the range have a waviness of 0. + +Thus, total waviness is `1 + 1 + 1 = 3`. + +**Example 3:** + +**Input:** num1 = 4848, num2 = 4848 + +**Output:** 2 + +**Explanation:** + +Number `4848`: the second digit 8 is a peak, and the third digit 4 is a valley, giving a waviness of 2. + +**Constraints:** + +* 1 <= num1 <= num2 <= 105 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/Solution.java b/src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/Solution.java new file mode 100644 index 000000000..6c9f7afe1 --- /dev/null +++ b/src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/Solution.java @@ -0,0 +1,29 @@ +package g3701_3800.s3752_lexicographically_smallest_negated_permutation_that_sums_to_target; + +// #Medium #Array #Math #Sorting #Greedy #Two_Pointers #Staff #Biweekly_Contest_170 +// #2026_04_26_Time_3_ms_(100.00%)_Space_162.22_MB_(86.17%) + +public class Solution { + public int[] lexSmallestNegatedPerm(int n, long target) { + long drop = (long) n * (n + 1) / 2 - target; + if (drop < 0 || drop % 2 != 0) { + return new int[] {}; + } + int[] ans = new int[n]; + int l = 0; + int r = n - 1; + for (int i = n; i > 0; i--) { + int val = i; + if (2 * val <= drop) { + drop -= 2 * val; + ans[l++] = -val; + } else { + ans[r--] = val; + } + } + if (drop != 0) { + return new int[] {}; + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/readme.md b/src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/readme.md new file mode 100644 index 000000000..7c381da51 --- /dev/null +++ b/src/main/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/readme.md @@ -0,0 +1,54 @@ +3752\. Lexicographically Smallest Negated Permutation that Sums to Target + +Medium + +You are given a positive integer `n` and an integer `target`. + +Return the **lexicographically smallest** array of integers of size `n` such that: + +* The **sum** of its elements equals `target`. +* The **absolute values** of its elements form a **permutation** of size `n`. + +If no such array exists, return an empty array. + +A **permutation** of size `n` is a rearrangement of integers `1, 2, ..., n`. + +**Example 1:** + +**Input:** n = 3, target = 0 + +**Output:** [-3,1,2] + +**Explanation:** + +The arrays that sum to 0 and whose absolute values form a permutation of size 3 are: + +* `[-3, 1, 2]` +* `[-3, 2, 1]` +* `[-2, -1, 3]` +* `[-2, 3, -1]` +* `[-1, -2, 3]` +* `[-1, 3, -2]` +* `[1, -3, 2]` +* `[1, 2, -3]` +* `[2, -3, 1]` +* `[2, 1, -3]` +* `[3, -2, -1]` +* `[3, -1, -2]` + +The lexicographically smallest one is `[-3, 1, 2]`. + +**Example 2:** + +**Input:** n = 1, target = 10000000000 + +**Output:** [] + +**Explanation:** + +There are no arrays that sum to 10000000000 and whose absolute values form a permutation of size 1. Therefore, the answer is `[]`. + +**Constraints:** + +* 1 <= n <= 105 +* -1010 <= target <= 1010 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/Solution.java b/src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/Solution.java new file mode 100644 index 000000000..4f09ec544 --- /dev/null +++ b/src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/Solution.java @@ -0,0 +1,78 @@ +package g3701_3800.s3753_total_waviness_of_numbers_in_range_ii; + +// #Hard #Dynamic_Programming #Math #Senior_Staff #Biweekly_Contest_170 +// #2026_04_26_Time_52_ms_(96.83%)_Space_46.46_MB_(98.41%) + +public class Solution { + private static class Pair { + long count; + long sum; + + Pair(long count, long sum) { + this.count = count; + this.sum = sum; + } + } + + private char[] digits; + private Pair[][][][][] memo; + private boolean[][][][][] seen; + + public long totalWaviness(long num1, long num2) { + return solve(num2) - solve(num1 - 1); + } + + private long solve(long x) { + if (x <= 0) { + return 0; + } + digits = Long.toString(x).toCharArray(); + int n = digits.length; + memo = new Pair[n][2][2][11][11]; + seen = new boolean[n][2][2][11][11]; + return dfs(0, 1, 0, 10, 10).sum; + } + + private Pair dfs(int pos, int tight, int started, int prev2, int prev1) { + if (pos == digits.length) { + return new Pair(1, 0); + } + if (seen[pos][tight][started][prev2][prev1]) { + return memo[pos][tight][started][prev2][prev1]; + } + seen[pos][tight][started][prev2][prev1] = true; + int limit = tight == 1 ? digits[pos] - '0' : 9; + long totalCount = 0; + long totalSum = 0; + for (int d = 0; d <= limit; d++) { + int nextTight = (tight == 1 && d == limit) ? 1 : 0; + if (started == 0 && d == 0) { + // still leading zeros, number not started + Pair nxt = dfs(pos + 1, nextTight, 0, 10, 10); + totalCount += nxt.count; + totalSum += nxt.sum; + } else if (started == 0) { + // first real digit + Pair nxt = dfs(pos + 1, nextTight, 1, 10, d); + totalCount += nxt.count; + totalSum += nxt.sum; + } else if (prev2 == 10) { + // second real digit + Pair nxt = dfs(pos + 1, nextTight, 1, prev1, d); + totalCount += nxt.count; + totalSum += nxt.sum; + } else { + // now prev1 is an interior candidate, decide if it is peak/valley + int add = 0; + if ((prev1 > prev2 && prev1 > d) || (prev1 < prev2 && prev1 < d)) { + add = 1; + } + Pair nxt = dfs(pos + 1, nextTight, 1, prev1, d); + totalCount += nxt.count; + totalSum += nxt.sum + add * nxt.count; + } + } + memo[pos][tight][started][prev2][prev1] = new Pair(totalCount, totalSum); + return memo[pos][tight][started][prev2][prev1]; + } +} diff --git a/src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/readme.md b/src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/readme.md new file mode 100644 index 000000000..ece80ce70 --- /dev/null +++ b/src/main/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/readme.md @@ -0,0 +1,62 @@ +3753\. Total Waviness of Numbers in Range II + +Hard + +You are given two integers `num1` and `num2` representing an **inclusive** range `[num1, num2]`. + +The **waviness** of a number is defined as the total count of its **peaks** and **valleys**: + +* A digit is a **peak** if it is **strictly greater** than both of its immediate neighbors. +* A digit is a **valley** if it is **strictly less** than both of its immediate neighbors. +* The first and last digits of a number **cannot** be peaks or valleys. +* Any number with fewer than 3 digits has a waviness of 0. + +Return the total sum of waviness for all numbers in the range `[num1, num2]`. + +**Example 1:** + +**Input:** num1 = 120, num2 = 130 + +**Output:** 3 + +**Explanation:** + +In the range `[120, 130]`: + +* `120`: middle digit 2 is a peak, waviness = 1. +* `121`: middle digit 2 is a peak, waviness = 1. +* `130`: middle digit 3 is a peak, waviness = 1. +* All other numbers in the range have a waviness of 0. + +Thus, total waviness is `1 + 1 + 1 = 3`. + +**Example 2:** + +**Input:** num1 = 198, num2 = 202 + +**Output:** 3 + +**Explanation:** + +In the range `[198, 202]`: + +* `198`: middle digit 9 is a peak, waviness = 1. +* `201`: middle digit 0 is a valley, waviness = 1. +* `202`: middle digit 0 is a valley, waviness = 1. +* All other numbers in the range have a waviness of 0. + +Thus, total waviness is `1 + 1 + 1 = 3`. + +**Example 3:** + +**Input:** num1 = 4848, num2 = 4848 + +**Output:** 2 + +**Explanation:** + +Number `4848`: the second digit 8 is a peak, and the third digit 4 is a valley, giving a waviness of 2. + +**Constraints:** + +* 1 <= num1 <= num2 <= 1015 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/SolutionTest.java b/src/test/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/SolutionTest.java new file mode 100644 index 000000000..d7d8b8df4 --- /dev/null +++ b/src/test/java/g3701_3800/s3751_total_waviness_of_numbers_in_range_i/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3751_total_waviness_of_numbers_in_range_i; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void totalWaviness() { + assertThat(new Solution().totalWaviness(120, 130), equalTo(3)); + } + + @Test + void totalWaviness2() { + assertThat(new Solution().totalWaviness(198, 202), equalTo(3)); + } + + @Test + void totalWaviness3() { + assertThat(new Solution().totalWaviness(4848, 4848), equalTo(2)); + } +} diff --git a/src/test/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/SolutionTest.java b/src/test/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/SolutionTest.java new file mode 100644 index 000000000..ce5a0370b --- /dev/null +++ b/src/test/java/g3701_3800/s3752_lexicographically_smallest_negated_permutation_that_sums_to_target/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3752_lexicographically_smallest_negated_permutation_that_sums_to_target; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void lexSmallestNegatedPerm() { + assertThat(new Solution().lexSmallestNegatedPerm(3, 0L), equalTo(new int[] {-3, 1, 2})); + } + + @Test + void lexSmallestNegatedPerm2() { + assertThat(new Solution().lexSmallestNegatedPerm(3, 10000000000L), equalTo(new int[] {})); + } +} diff --git a/src/test/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/SolutionTest.java b/src/test/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/SolutionTest.java new file mode 100644 index 000000000..895b95607 --- /dev/null +++ b/src/test/java/g3701_3800/s3753_total_waviness_of_numbers_in_range_ii/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3753_total_waviness_of_numbers_in_range_ii; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void totalWaviness() { + assertThat(new Solution().totalWaviness(120L, 130L), equalTo(3L)); + } + + @Test + void totalWaviness2() { + assertThat(new Solution().totalWaviness(198L, 202L), equalTo(3L)); + } + + @Test + void totalWaviness3() { + assertThat(new Solution().totalWaviness(4848L, 4848L), equalTo(2L)); + } +} From 06211c30a4b2e97c6251ea27a80208530ccf1c05 Mon Sep 17 00:00:00 2001 From: ThanhNIT <93962044+ThanhNIT@users.noreply.github.com> Date: Sun, 26 Apr 2026 18:39:06 +0700 Subject: [PATCH 21/34] Added tasks 3737-3747 --- .../Solution.java | 22 ++++++ .../readme.md | 53 +++++++++++++++ .../Solution.java | 42 ++++++++++++ .../readme.md | 38 +++++++++++ .../Solution.java | 21 ++++++ .../readme.md | 53 +++++++++++++++ .../Solution.java | 24 +++++++ .../readme.md | 50 ++++++++++++++ .../Solution.java | 28 ++++++++ .../readme.md | 50 ++++++++++++++ .../Solution.java | 51 ++++++++++++++ .../readme.md | 52 ++++++++++++++ .../Solution.java | 67 +++++++++++++++++++ .../readme.md | 52 ++++++++++++++ .../Solution.java | 24 +++++++ .../readme.md | 34 ++++++++++ .../Solution.java | 14 ++++ .../readme.md | 44 ++++++++++++ .../Solution.java | 28 ++++++++ .../readme.md | 33 +++++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 28 ++++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ 30 files changed, 1015 insertions(+) create mode 100644 src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/Solution.java create mode 100644 src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/readme.md create mode 100644 src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/Solution.java create mode 100644 src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/readme.md create mode 100644 src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/Solution.java create mode 100644 src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/readme.md create mode 100644 src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/Solution.java create mode 100644 src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/readme.md create mode 100644 src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/Solution.java create mode 100644 src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/readme.md create mode 100644 src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/Solution.java create mode 100644 src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/readme.md create mode 100644 src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/Solution.java create mode 100644 src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/readme.md create mode 100644 src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/Solution.java create mode 100644 src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/readme.md create mode 100644 src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/Solution.java create mode 100644 src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/readme.md create mode 100644 src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/Solution.java create mode 100644 src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/readme.md create mode 100644 src/test/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3742_maximum_path_score_in_a_grid/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3743_maximize_cyclic_partition_score/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3745_maximize_expression_of_three_elements/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/Solution.java b/src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/Solution.java new file mode 100644 index 000000000..1c4cda309 --- /dev/null +++ b/src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/Solution.java @@ -0,0 +1,22 @@ +package g3701_3800.s3737_count_subarrays_with_majority_element_i; + +// #Medium #Array #Hash_Table #Prefix_Sum #Counting #Divide_and_Conquer #Segment_Tree #Merge_Sort +// #Senior #Biweekly_Contest_169 #2026_04_26_Time_1_ms_(100.00%)_Space_46.96_MB_(57.62%) + +public class Solution { + public int countMajoritySubarrays(int[] a, int target) { + int n = a.length; + int pre = n + 1; + int res = 0; + int[] count = new int[2 * n + 2]; + int[] acc = new int[2 * n + 2]; + count[pre] = acc[pre] = 1; + for (int i : a) { + pre += (i == target ? 1 : -1); + count[pre]++; + acc[pre] = acc[pre - 1] + count[pre]; + res += acc[pre - 1]; + } + return res; + } +} diff --git a/src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/readme.md b/src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/readme.md new file mode 100644 index 000000000..1006f055a --- /dev/null +++ b/src/main/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/readme.md @@ -0,0 +1,53 @@ +3737\. Count Subarrays With Majority Element I + +Medium + +You are given an integer array `nums` and an integer `target`. + +Return the number of **non-empty subarrays** of `nums` in which `target` is the **majority element**. + +The **majority element** of a subarray is the element that appears **strictly** **more than half** of the times in that subarray. + +**Example 1:** + +**Input:** nums = [1,2,2,3], target = 2 + +**Output:** 5 + +**Explanation:** + +Valid subarrays with `target = 2` as the majority element: + +* `nums[1..1] = [2]` +* `nums[2..2] = [2]` +* `nums[1..2] = [2,2]` +* `nums[0..2] = [1,2,2]` +* `nums[1..3] = [2,2,3]` + +So there are 5 such subarrays. + +**Example 2:** + +**Input:** nums = [1,1,1,1], target = 1 + +**Output:** 10 + +**Explanation:** + +All 10 subarrays have 1 as the majority element. + +**Example 3:** + +**Input:** nums = [1,2,3], target = 4 + +**Output:** 0 + +**Explanation:** + +`target = 4` does not appear in `nums` at all. Therefore, there cannot be any subarray where 4 is the majority element. Hence the answer is 0. + +**Constraints:** + +* `1 <= nums.length <= 1000` +* 1 <= nums[i] <= 109 +* 1 <= target <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/Solution.java b/src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/Solution.java new file mode 100644 index 000000000..24cf3ea96 --- /dev/null +++ b/src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/Solution.java @@ -0,0 +1,42 @@ +package g3701_3800.s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element; + +// #Medium #Array #Dynamic_Programming #Staff #Biweekly_Contest_169 +// #2026_04_26_Time_7_ms_(99.28%)_Space_123.88_MB_(5.07%) + +public class Solution { + public int longestSubarray(int[] nums) { + int n = nums.length; + if (n < 3) { + return n; + } + int i = 0; + int len1 = 0; + int len2 = 0; + int ans = 2; + while (i < n) { + int l = (i == 0) ? -1000 * 1000 * 10 : nums[i - 1]; + int r = (i == n - 1) ? 1000 * 1000 * 10 : nums[i + 1]; + if (l <= nums[i]) { + len2++; + ans = Math.max(len2 + 1, ans); + } else if (r >= nums[i]) { + int j = i; + len1 = len2; + while (j < n - 1 && nums[j] <= nums[j + 1]) { + j++; + } + len2 = j - i + 1; + ans = Math.max(len2 + 1, ans); + if (l <= r || (len1 > 1 && nums[i - 2] <= nums[i])) { + ans = Math.max(len1 + len2, ans); + } + i = j; + } else { + len2 = 0; + } + i++; + } + ans = Math.min(ans, n); + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/readme.md b/src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/readme.md new file mode 100644 index 000000000..d0542bca3 --- /dev/null +++ b/src/main/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/readme.md @@ -0,0 +1,38 @@ +3738\. Longest Non-Decreasing Subarray After Replacing at Most One Element + +Medium + +You are given an integer array `nums`. + +You are allowed to replace **at most** one element in the array with any other integer value of your choice. + +Return the length of the **longest non-decreasing subarray** that can be obtained after performing at most one replacement. + +An array is said to be **non-decreasing** if each element is greater than or equal to its previous one (if it exists). + +**Example 1:** + +**Input:** nums = [1,2,3,1,2] + +**Output:** 4 + +**Explanation:** + +Replacing `nums[3] = 1` with 3 gives the array [1, 2, 3, 3, 2]. + +The longest non-decreasing subarray is [1, 2, 3, 3], which has a length of 4. + +**Example 2:** + +**Input:** nums = [2,2,2,2,2] + +**Output:** 5 + +**Explanation:** + +All elements in `nums` are equal, so it is already non-decreasing and the entire `nums` forms a subarray of length 5. + +**Constraints:** + +* 1 <= nums.length <= 105 +* -109 <= nums[i] <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/Solution.java b/src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/Solution.java new file mode 100644 index 000000000..0c7ca8923 --- /dev/null +++ b/src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/Solution.java @@ -0,0 +1,21 @@ +package g3701_3800.s3739_count_subarrays_with_majority_element_ii; + +// #Hard #Array #Hash_Table #Prefix_Sum #Divide_and_Conquer #Segment_Tree #Merge_Sort #Senior_Staff +// #Biweekly_Contest_169 #2026_04_26_Time_3_ms_(100.00%)_Space_90.94_MB_(36.19%) + +public class Solution { + public long countMajoritySubarrays(int[] nums, int target) { + int n = nums.length; + int pre = n + 1; + long[] count = new long[2 * n + 2]; + long[] acc = new long[2 * n + 2]; + long res = 0; + count[pre] = acc[pre] = 1; + for (int a : nums) { + pre += (a == target ? 1 : -1); + acc[pre] = ++count[pre] + acc[pre - 1]; + res += acc[pre - 1]; + } + return res; + } +} diff --git a/src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/readme.md b/src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/readme.md new file mode 100644 index 000000000..f8da05e77 --- /dev/null +++ b/src/main/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/readme.md @@ -0,0 +1,53 @@ +3739\. Count Subarrays With Majority Element II + +Hard + +You are given an integer array `nums` and an integer `target`. + +Return the number of **non-empty subarrays** of `nums` in which `target` is the **majority element**. + +The **majority element** of a subarray is the element that appears **strictly more than half** of the times in that subarray. + +**Example 1:** + +**Input:** nums = [1,2,2,3], target = 2 + +**Output:** 5 + +**Explanation:** + +Valid subarrays with `target = 2` as the majority element: + +* `nums[1..1] = [2]` +* `nums[2..2] = [2]` +* `nums[1..2] = [2,2]` +* `nums[0..2] = [1,2,2]` +* `nums[1..3] = [2,2,3]` + +So there are 5 such subarrays. + +**Example 2:** + +**Input:** nums = [1,1,1,1], target = 1 + +**Output:** 10 + +**Explanation:** + +All 10 subarrays have 1 as the majority element. + +**Example 3:** + +**Input:** nums = [1,2,3], target = 4 + +**Output:** 0 + +**Explanation:** + +`target = 4` does not appear in `nums` at all. Therefore, there cannot be any subarray where 4 is the majority element. Hence the answer is 0. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 109 +* 1 <= target <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/Solution.java b/src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/Solution.java new file mode 100644 index 000000000..9aa0d85bd --- /dev/null +++ b/src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/Solution.java @@ -0,0 +1,24 @@ +package g3701_3800.s3740_minimum_distance_between_three_equal_elements_i; + +// #Easy #Array #Hash_Table #Mid_Level #Weekly_Contest_475 +// #2026_04_26_Time_1_ms_(99.99%)_Space_44.21_MB_(75.36%) + +public class Solution { + public int minimumDistance(int[] nums) { + int len = nums.length; + int[] last2 = new int[len]; + int res = 200; + for (int i = 0; i < len; i++) { + int val = nums[i] - 1; + int pos = i + 1; + int pack = last2[val]; + int old = pack & 255; + int cur = pack >> 8; + last2[val] = cur | (pos << 8); + if (old > 0) { + res = Math.min(res, (pos - old) << 1); + } + } + return res == 200 ? -1 : res; + } +} diff --git a/src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/readme.md b/src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/readme.md new file mode 100644 index 000000000..28e3b80ac --- /dev/null +++ b/src/main/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/readme.md @@ -0,0 +1,50 @@ +3740\. Minimum Distance Between Three Equal Elements I + +Easy + +You are given an integer array `nums`. + +A tuple `(i, j, k)` of 3 **distinct** indices is **good** if `nums[i] == nums[j] == nums[k]`. + +The **distance** of a **good** tuple is `abs(i - j) + abs(j - k) + abs(k - i)`, where `abs(x)` denotes the **absolute value** of `x`. + +Return an integer denoting the **minimum** possible **distance** of a **good** tuple. If no **good** tuples exist, return `-1`. + +**Example 1:** + +**Input:** nums = [1,2,1,1,3] + +**Output:** 6 + +**Explanation:** + +The minimum distance is achieved by the good tuple `(0, 2, 3)`. + +`(0, 2, 3)` is a good tuple because `nums[0] == nums[2] == nums[3] == 1`. Its distance is `abs(0 - 2) + abs(2 - 3) + abs(3 - 0) = 2 + 1 + 3 = 6`. + +**Example 2:** + +**Input:** nums = [1,1,2,3,2,1,2] + +**Output:** 8 + +**Explanation:** + +The minimum distance is achieved by the good tuple `(2, 4, 6)`. + +`(2, 4, 6)` is a good tuple because `nums[2] == nums[4] == nums[6] == 2`. Its distance is `abs(2 - 4) + abs(4 - 6) + abs(6 - 2) = 2 + 2 + 4 = 8`. + +**Example 3:** + +**Input:** nums = [1] + +**Output:** \-1 + +**Explanation:** + +There are no good tuples. Therefore, the answer is -1. + +**Constraints:** + +* `1 <= n == nums.length <= 100` +* `1 <= nums[i] <= n` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/Solution.java b/src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/Solution.java new file mode 100644 index 000000000..0140d2aa4 --- /dev/null +++ b/src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/Solution.java @@ -0,0 +1,28 @@ +package g3701_3800.s3741_minimum_distance_between_three_equal_elements_ii; + +// #Medium #Array #Hash_Table #Senior #Weekly_Contest_475 +// #2026_04_26_Time_6_ms_(99.60%)_Space_161.24_MB_(96.23%) + +public class Solution { + public int minimumDistance(int[] nums) { + int n = nums.length; + int ans = Integer.MAX_VALUE; + int[] prev1 = new int[n + 1]; + int[] prev2 = new int[n + 1]; + for (int i = 0; i < n + 1; i++) { + prev1[i] = prev2[i] = -1; + } + for (int i = 0; i < n; i++) { + int value = nums[i]; + if (prev2[value] != -1) { + ans = Math.min(ans, (i - prev2[value])); + } + prev2[value] = prev1[value]; + prev1[value] = i; + } + if (ans < 100002) { + return ans * 2; + } + return -1; + } +} diff --git a/src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/readme.md b/src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/readme.md new file mode 100644 index 000000000..d3aee5aa3 --- /dev/null +++ b/src/main/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/readme.md @@ -0,0 +1,50 @@ +3741\. Minimum Distance Between Three Equal Elements II + +Medium + +You are given an integer array `nums`. + +A tuple `(i, j, k)` of 3 **distinct** indices is **good** if `nums[i] == nums[j] == nums[k]`. + +The **distance** of a **good** tuple is `abs(i - j) + abs(j - k) + abs(k - i)`, where `abs(x)` denotes the **absolute value** of `x`. + +Return an integer denoting the **minimum** possible **distance** of a **good** tuple. If no **good** tuples exist, return `-1`. + +**Example 1:** + +**Input:** nums = [1,2,1,1,3] + +**Output:** 6 + +**Explanation:** + +The minimum distance is achieved by the good tuple `(0, 2, 3)`. + +`(0, 2, 3)` is a good tuple because `nums[0] == nums[2] == nums[3] == 1`. Its distance is `abs(0 - 2) + abs(2 - 3) + abs(3 - 0) = 2 + 1 + 3 = 6`. + +**Example 2:** + +**Input:** nums = [1,1,2,3,2,1,2] + +**Output:** 8 + +**Explanation:** + +The minimum distance is achieved by the good tuple `(2, 4, 6)`. + +`(2, 4, 6)` is a good tuple because `nums[2] == nums[4] == nums[6] == 2`. Its distance is `abs(2 - 4) + abs(4 - 6) + abs(6 - 2) = 2 + 2 + 4 = 8`. + +**Example 3:** + +**Input:** nums = [1] + +**Output:** \-1 + +**Explanation:** + +There are no good tuples. Therefore, the answer is -1. + +**Constraints:** + +* 1 <= n == nums.length <= 105 +* `1 <= nums[i] <= n` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/Solution.java b/src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/Solution.java new file mode 100644 index 000000000..f13cf823e --- /dev/null +++ b/src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/Solution.java @@ -0,0 +1,51 @@ +package g3701_3800.s3742_maximum_path_score_in_a_grid; + +// #Medium #Array #Dynamic_Programming #Matrix #Staff #Weekly_Contest_475 +// #2026_04_26_Time_212_ms_(91.38%)_Space_92.93_MB_(35.06%) + +public class Solution { + public int maxPathScore(int[][] grid, int k) { + int n = grid.length; + int m = grid[0].length; + int mxc = Math.min(k + 1, n + m + 5); + int[][][] dp = new int[n][m][mxc]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + for (int c = 0; c < mxc; c++) { + dp[i][j][c] = -1; + } + } + } + dp[0][0][0] = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + for (int c = 0; c < mxc; c++) { + if (dp[i][j][c] == -1) { + continue; + } + // move right + if (j + 1 < m) { + int cost = c + (grid[i][j + 1] > 0 ? 1 : 0); + if (cost < mxc) { + dp[i][j + 1][cost] = + Math.max(dp[i][j + 1][cost], dp[i][j][c] + grid[i][j + 1]); + } + } + // move down + if (i + 1 < n) { + int cost = c + (grid[i + 1][j] > 0 ? 1 : 0); + if (cost < mxc) { + dp[i + 1][j][cost] = + Math.max(dp[i + 1][j][cost], dp[i][j][c] + grid[i + 1][j]); + } + } + } + } + } + int ans = -1; + for (int c = 0; c < mxc; c++) { + ans = Math.max(ans, dp[n - 1][m - 1][c]); + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/readme.md b/src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/readme.md new file mode 100644 index 000000000..4294a424d --- /dev/null +++ b/src/main/java/g3701_3800/s3742_maximum_path_score_in_a_grid/readme.md @@ -0,0 +1,52 @@ +3742\. Maximum Path Score in a Grid + +Medium + +You are given an `m x n` grid where each cell contains one of the values 0, 1, or 2. You are also given an integer `k`. + +You start from the top-left corner `(0, 0)` and want to reach the bottom-right corner `(m - 1, n - 1)` by moving only **right** or **down**. + +Each cell contributes a specific score and incurs an associated cost, according to their cell values: + +* 0: adds 0 to your score and costs 0. +* 1: adds 1 to your score and costs 1. +* 2: adds 2 to your score and costs 1. + +Return the **maximum** score achievable without exceeding a total cost of `k`, or -1 if no valid path exists. + +**Note:** If you reach the last cell but the total cost exceeds `k`, the path is invalid. + +**Example 1:** + +**Input:** grid = [[0, 1],[2, 0]], k = 1 + +**Output:** 2 + +**Explanation:** + +The optimal path is: + +| Cell | grid[i][j] | Score | Total Score | Cost | Total Cost | +|--------|------------|-------|-------------|------|------------| +| (0, 0) | 0 | 0 | 0 | 0 | 0 | +| (1, 0) | 2 | 2 | 2 | 1 | 1 | +| (1, 1) | 0 | 0 | 2 | 0 | 1 | + +Thus, the maximum possible score is 2. + +**Example 2:** + +**Input:** grid = [[0, 1],[1, 2]], k = 1 + +**Output:** \-1 + +**Explanation:** + +There is no path that reaches cell `(1, 1)` without exceeding cost k. Thus, the answer is -1. + +**Constraints:** + +* `1 <= m, n <= 200` +* 0 <= k <= 103 +* `grid[0][0] == 0` +* `0 <= grid[i][j] <= 2` diff --git a/src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/Solution.java b/src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/Solution.java new file mode 100644 index 000000000..6157b2620 --- /dev/null +++ b/src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/Solution.java @@ -0,0 +1,67 @@ +package g3701_3800.s3743_maximize_cyclic_partition_score; + +// #Hard #Array #Dynamic_Programming #Weekly_Contest_475 #Principal +// #2026_04_26_Time_40_ms_(96.15%)_Space_120.45_MB_(7.69%) + +public class Solution { + public long maximumScore(int[] nums, int k) { + // Find index of minimum element + int j = 0; + for (int i = 0; i < nums.length; i++) { + if (nums[i] < nums[j]) { + j = i; + } + } + // Build array 'a' + int n = nums.length; + int[] a = new int[n]; + for (int i = 0; i < n; i++) { + a[i] = nums[(j + i) % n]; + } + // Build array 'b' (rotated and reversed) + int[] b = new int[n]; + for (int i = 0; i < n; i++) { + b[i] = nums[(j + 1 + i) % n]; + } + reverse(b); + // Compute and return max of f(a, k) and f(b, k) + return Math.max(f(a, k), f(b, k)); + } + + private long f(int[] a, int k) { + int n = a.length; + long[][] dp = new long[k + 1][n + 1]; + long mn = Long.MAX_VALUE; + long mx = Long.MIN_VALUE; + // Initialize dp[1][j+1] + for (int j = 0; j < n; j++) { + mn = Math.min(mn, a[j]); + mx = Math.max(mx, a[j]); + dp[1][j + 1] = mx - mn; + } + long res = dp[1][n]; + for (int i = 2; i <= k; i++) { + long x = Long.MIN_VALUE; + long y = Long.MIN_VALUE; + for (int j = i - 1; j < n; j++) { + x = Math.max(x, dp[i - 1][j] - a[j]); + y = Math.max(y, dp[i - 1][j] + a[j]); + dp[i][j + 1] = Math.max(dp[i][j], Math.max(x + a[j], y - a[j])); + } + res = Math.max(res, dp[i][n]); + } + return res; + } + + private void reverse(int[] arr) { + int left = 0; + int right = arr.length - 1; + while (left < right) { + int temp = arr[left]; + arr[left] = arr[right]; + arr[right] = temp; + left++; + right--; + } + } +} diff --git a/src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/readme.md b/src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/readme.md new file mode 100644 index 000000000..56f6640a3 --- /dev/null +++ b/src/main/java/g3701_3800/s3743_maximize_cyclic_partition_score/readme.md @@ -0,0 +1,52 @@ +3743\. Maximize Cyclic Partition Score + +Hard + +You are given a **cyclic** array `nums` and an integer `k`. + +**Partition** `nums` into **at most** `k` non-empty subarrays. As `nums` is cyclic, these subarrays may wrap around from the end of the array back to the beginning. + +The **range** of a subarray is the difference between its **maximum** and **minimum** values. The **score** of a partition is the sum of subarray **ranges**. + +Return the **maximum** possible **score** among all cyclic partitions. + +**Example 1:** + +**Input:** nums = [1,2,3,3], k = 2 + +**Output:** 3 + +**Explanation:** + +* Partition `nums` into `[2, 3]` and `[3, 1]` (wrapped around). +* The range of `[2, 3]` is `max(2, 3) - min(2, 3) = 3 - 2 = 1`. +* The range of `[3, 1]` is `max(3, 1) - min(3, 1) = 3 - 1 = 2`. +* The score is `1 + 2 = 3`. + +**Example 2:** + +**Input:** nums = [1,2,3,3], k = 1 + +**Output:** 2 + +**Explanation:** + +* Partition `nums` into `[1, 2, 3, 3]`. +* The range of `[1, 2, 3, 3]` is `max(1, 2, 3, 3) - min(1, 2, 3, 3) = 3 - 1 = 2`. +* The score is 2. + +**Example 3:** + +**Input:** nums = [1,2,3,3], k = 4 + +**Output:** 3 + +**Explanation:** + +Identical to Example 1, we partition `nums` into `[2, 3]` and `[3, 1]`. Note that `nums` may be partitioned into fewer than `k` subarrays. + +**Constraints:** + +* `1 <= nums.length <= 1000` +* 1 <= nums[i] <= 109 +* `1 <= k <= nums.length` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/Solution.java b/src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/Solution.java new file mode 100644 index 000000000..854c4c2d6 --- /dev/null +++ b/src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/Solution.java @@ -0,0 +1,24 @@ +package g3701_3800.s3745_maximize_expression_of_three_elements; + +// #Easy #Array #Sorting #Greedy #Enumeration #Mid_Level #Weekly_Contest_476 +// #2026_04_26_Time_1_ms_(99.84%)_Space_45.12_MB_(68.56%) + +public class Solution { + public int maximizeExpressionOfThree(int[] nums) { + int max1 = Integer.MIN_VALUE; + int max2 = Integer.MIN_VALUE; + int min = Integer.MAX_VALUE; + for (int num : nums) { + if (num > max1) { + max2 = max1; + max1 = num; + } else if (num > max2) { + max2 = num; + } + if (num < min) { + min = num; + } + } + return max1 + max2 - min; + } +} diff --git a/src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/readme.md b/src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/readme.md new file mode 100644 index 000000000..8b7d60816 --- /dev/null +++ b/src/main/java/g3701_3800/s3745_maximize_expression_of_three_elements/readme.md @@ -0,0 +1,34 @@ +3745\. Maximize Expression of Three Elements + +Easy + +You are given an integer array `nums`. + +Choose three elements `a`, `b`, and `c` from `nums` at **distinct** indices such that the value of the expression `a + b - c` is maximized. + +Return an integer denoting the **maximum possible value** of this expression. + +**Example 1:** + +**Input:** nums = [1,4,2,5] + +**Output:** 8 + +**Explanation:** + +We can choose `a = 4`, `b = 5`, and `c = 1`. The expression value is `4 + 5 - 1 = 8`, which is the maximum possible. + +**Example 2:** + +**Input:** nums = [-2,0,5,-2,4] + +**Output:** 11 + +**Explanation:** + +We can choose `a = 5`, `b = 4`, and `c = -2`. The expression value is `5 + 4 - (-2) = 11`, which is the maximum possible. + +**Constraints:** + +* `3 <= nums.length <= 100` +* `-100 <= nums[i] <= 100` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/Solution.java b/src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/Solution.java new file mode 100644 index 000000000..e6f31ded3 --- /dev/null +++ b/src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/Solution.java @@ -0,0 +1,14 @@ +package g3701_3800.s3746_minimum_string_length_after_balanced_removals; + +// #Medium #String #Stack #Counting #Senior #Weekly_Contest_476 +// #2026_04_26_Time_3_ms_(95.94%)_Space_47.34_MB_(25.76%) + +public class Solution { + public int minLengthAfterRemovals(String s) { + int[] hash = new int[2]; + for (char c : s.toCharArray()) { + hash[c - 'a']++; + } + return Math.abs(hash[0] - hash[1]); + } +} diff --git a/src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/readme.md b/src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/readme.md new file mode 100644 index 000000000..d97662b43 --- /dev/null +++ b/src/main/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/readme.md @@ -0,0 +1,44 @@ +3746\. Minimum String Length After Balanced Removals + +Medium + +You are given a string `s` consisting only of the characters `'a'` and `'b'`. + +You are allowed to repeatedly remove **any substring** where the number of `'a'` characters is equal to the number of `'b'` characters. After each removal, the remaining parts of the string are concatenated together without gaps. + +Return an integer denoting the **minimum possible length** of the string after performing any number of such operations. + +**Example 1:** + +**Input:** s = `"aabbab"` + +**Output:** 0 + +**Explanation:** + +The substring `"aabbab"` has three `'a'` and three `'b'`. Since their counts are equal, we can remove the entire string directly. The minimum length is 0. + +**Example 2:** + +**Input:** s = `"aaaa"` + +**Output:** 4 + +**Explanation:** + +Every substring of `"aaaa"` contains only `'a'` characters. No substring can be removed as a result, so the minimum length remains 4. + +**Example 3:** + +**Input:** s = `"aaabb"` + +**Output:** 1 + +**Explanation:** + +First, remove the substring `"ab"`, leaving `"aab"`. Next, remove the new substring `"ab"`, leaving `"a"`. No further removals are possible, so the minimum length is 1. + +**Constraints:** + +* 1 <= s.length <= 105 +* `s[i]` is either `'a'` or `'b'`. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/Solution.java b/src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/Solution.java new file mode 100644 index 000000000..244b4c74c --- /dev/null +++ b/src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/Solution.java @@ -0,0 +1,28 @@ +package g3701_3800.s3747_count_distinct_integers_after_removing_zeros; + +// #Medium #Dynamic_Programming #Math #Staff #Weekly_Contest_476 +// #2026_04_26_Time_1_ms_(100.00%)_Space_42.72_MB_(79.66%) + +public class Solution { + public long countDistinct(long n) { + String digits = Long.toString(n); + int m = digits.length(); + long[] power9 = new long[m + 1]; + power9[0] = 1; + for (int i = 1; i <= m; i++) { + power9[i] = power9[i - 1] * 9; + } + long total = 0; + for (int length = 1; length < m; length++) { + total += power9[length]; + } + for (int idx = 0; idx < m; idx++) { + int d = digits.charAt(idx) - '0'; + if (d == 0) { + return total; + } + total += (d - 1) * power9[m - idx - 1]; + } + return total + 1; + } +} diff --git a/src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/readme.md b/src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/readme.md new file mode 100644 index 000000000..fc8394dc5 --- /dev/null +++ b/src/main/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/readme.md @@ -0,0 +1,33 @@ +3747\. Count Distinct Integers After Removing Zeros + +Medium + +You are given a **positive** integer `n`. + +For every integer `x` from 1 to `n`, we write down the integer obtained by removing all zeros from the decimal representation of `x`. + +Return an integer denoting the number of **distinct** integers written down. + +**Example 1:** + +**Input:** n = 10 + +**Output:** 9 + +**Explanation:** + +The integers we wrote down are 1, 2, 3, 4, 5, 6, 7, 8, 9, 1. There are 9 distinct integers (1, 2, 3, 4, 5, 6, 7, 8, 9). + +**Example 2:** + +**Input:** n = 3 + +**Output:** 3 + +**Explanation:** + +The integers we wrote down are 1, 2, 3. There are 3 distinct integers (1, 2, 3). + +**Constraints:** + +* 1 <= n <= 1015 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/SolutionTest.java b/src/test/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/SolutionTest.java new file mode 100644 index 000000000..715d376f4 --- /dev/null +++ b/src/test/java/g3701_3800/s3737_count_subarrays_with_majority_element_i/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3737_count_subarrays_with_majority_element_i; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countMajoritySubarrays() { + assertThat(new Solution().countMajoritySubarrays(new int[] {1, 1, 2}, 1), equalTo(4)); + } + + @Test + void countMajoritySubarrays2() { + assertThat(new Solution().countMajoritySubarrays(new int[] {2, 2}, 1), equalTo(0)); + } + + @Test + void countMajoritySubarrays3() { + assertThat(new Solution().countMajoritySubarrays(new int[] {1, 2, 1, 2}, 1), equalTo(3)); + } +} diff --git a/src/test/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/SolutionTest.java b/src/test/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/SolutionTest.java new file mode 100644 index 000000000..f93e28135 --- /dev/null +++ b/src/test/java/g3701_3800/s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element/SolutionTest.java @@ -0,0 +1,28 @@ +package g3701_3800.s3738_longest_non_decreasing_subarray_after_replacing_at_most_one_element; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void longestSubarray() { + assertThat(new Solution().longestSubarray(new int[] {1, 2, 3}), equalTo(3)); + } + + @Test + void longestSubarray2() { + assertThat(new Solution().longestSubarray(new int[] {3, 2, 1}), equalTo(2)); + } + + @Test + void longestSubarray3() { + assertThat(new Solution().longestSubarray(new int[] {1, 5, 3, 4, 6}), equalTo(5)); + } + + @Test + void longestSubarray4() { + assertThat(new Solution().longestSubarray(new int[] {1, 5}), equalTo(2)); + } +} diff --git a/src/test/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/SolutionTest.java b/src/test/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/SolutionTest.java new file mode 100644 index 000000000..d2150cb30 --- /dev/null +++ b/src/test/java/g3701_3800/s3739_count_subarrays_with_majority_element_ii/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3739_count_subarrays_with_majority_element_ii; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countMajoritySubarrays() { + assertThat(new Solution().countMajoritySubarrays(new int[] {1, 1, 2}, 1), equalTo(4L)); + } + + @Test + void countMajoritySubarrays2() { + assertThat(new Solution().countMajoritySubarrays(new int[] {2, 2}, 1), equalTo(0L)); + } + + @Test + void countMajoritySubarrays3() { + assertThat(new Solution().countMajoritySubarrays(new int[] {1, 2, 1, 2}, 1), equalTo(3L)); + } +} diff --git a/src/test/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/SolutionTest.java b/src/test/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/SolutionTest.java new file mode 100644 index 000000000..b37a726aa --- /dev/null +++ b/src/test/java/g3701_3800/s3740_minimum_distance_between_three_equal_elements_i/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3740_minimum_distance_between_three_equal_elements_i; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minimumDistance() { + assertThat(new Solution().minimumDistance(new int[] {1, 1, 1}), equalTo(4)); + } + + @Test + void minimumDistance2() { + assertThat(new Solution().minimumDistance(new int[] {1, 2, 3, 1, 2, 3}), equalTo(-1)); + } + + @Test + void minimumDistance3() { + assertThat(new Solution().minimumDistance(new int[] {1, 2, 1, 2, 1}), equalTo(8)); + } +} diff --git a/src/test/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/SolutionTest.java b/src/test/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/SolutionTest.java new file mode 100644 index 000000000..698fa427d --- /dev/null +++ b/src/test/java/g3701_3800/s3741_minimum_distance_between_three_equal_elements_ii/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3741_minimum_distance_between_three_equal_elements_ii; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minimumDistance() { + assertThat(new Solution().minimumDistance(new int[] {1, 1, 1}), equalTo(4)); + } + + @Test + void minimumDistance2() { + assertThat(new Solution().minimumDistance(new int[] {1, 2, 3, 1, 2, 3}), equalTo(-1)); + } + + @Test + void minimumDistance3() { + assertThat(new Solution().minimumDistance(new int[] {1, 2, 1, 2, 1}), equalTo(8)); + } +} diff --git a/src/test/java/g3701_3800/s3742_maximum_path_score_in_a_grid/SolutionTest.java b/src/test/java/g3701_3800/s3742_maximum_path_score_in_a_grid/SolutionTest.java new file mode 100644 index 000000000..1647dc91c --- /dev/null +++ b/src/test/java/g3701_3800/s3742_maximum_path_score_in_a_grid/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3742_maximum_path_score_in_a_grid; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maxPathScore() { + assertThat(new Solution().maxPathScore(new int[][] {{0, 1}, {2, 3}}, 1), equalTo(-1)); + } + + @Test + void maxPathScore2() { + assertThat(new Solution().maxPathScore(new int[][] {{0, 1}, {2, 3}}, 2), equalTo(5)); + } + + @Test + void maxPathScore3() { + assertThat(new Solution().maxPathScore(new int[][] {{-1, -2}, {-3, -4}}, 0), equalTo(-1)); + } +} diff --git a/src/test/java/g3701_3800/s3743_maximize_cyclic_partition_score/SolutionTest.java b/src/test/java/g3701_3800/s3743_maximize_cyclic_partition_score/SolutionTest.java new file mode 100644 index 000000000..37f54fb21 --- /dev/null +++ b/src/test/java/g3701_3800/s3743_maximize_cyclic_partition_score/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3743_maximize_cyclic_partition_score; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maximumScore() { + assertThat(new Solution().maximumScore(new int[] {5, 5, 5}, 2), equalTo(0L)); + } + + @Test + void maximumScore2() { + assertThat(new Solution().maximumScore(new int[] {1, 3, 2}, 1), equalTo(2L)); + } + + @Test + void maximumScore3() { + assertThat(new Solution().maximumScore(new int[] {1, 4, 2}, 2), equalTo(3L)); + } +} diff --git a/src/test/java/g3701_3800/s3745_maximize_expression_of_three_elements/SolutionTest.java b/src/test/java/g3701_3800/s3745_maximize_expression_of_three_elements/SolutionTest.java new file mode 100644 index 000000000..3dfc57688 --- /dev/null +++ b/src/test/java/g3701_3800/s3745_maximize_expression_of_three_elements/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3745_maximize_expression_of_three_elements; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maximizeExpressionOfThree() { + assertThat(new Solution().maximizeExpressionOfThree(new int[] {1, 2, 3}), equalTo(4)); + } + + @Test + void maximizeExpressionOfThree2() { + assertThat(new Solution().maximizeExpressionOfThree(new int[] {5, 5, 5}), equalTo(5)); + } + + @Test + void maximizeExpressionOfThree3() { + assertThat(new Solution().maximizeExpressionOfThree(new int[] {-5, -1, -3, 4}), equalTo(8)); + } +} diff --git a/src/test/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/SolutionTest.java b/src/test/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/SolutionTest.java new file mode 100644 index 000000000..057a9b553 --- /dev/null +++ b/src/test/java/g3701_3800/s3746_minimum_string_length_after_balanced_removals/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3746_minimum_string_length_after_balanced_removals; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minLengthAfterRemovals() { + assertThat(new Solution().minLengthAfterRemovals("ab"), equalTo(0)); + } + + @Test + void minLengthAfterRemovals2() { + assertThat(new Solution().minLengthAfterRemovals("aaab"), equalTo(2)); + } + + @Test + void minLengthAfterRemovals3() { + assertThat(new Solution().minLengthAfterRemovals("bbbb"), equalTo(4)); + } +} diff --git a/src/test/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/SolutionTest.java b/src/test/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/SolutionTest.java new file mode 100644 index 000000000..e4e91a351 --- /dev/null +++ b/src/test/java/g3701_3800/s3747_count_distinct_integers_after_removing_zeros/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3747_count_distinct_integers_after_removing_zeros; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countDistinct() { + assertThat(new Solution().countDistinct(9L), equalTo(9L)); + } + + @Test + void countDistinct2() { + assertThat(new Solution().countDistinct(20L), equalTo(18L)); + } + + @Test + void countDistinct3() { + assertThat(new Solution().countDistinct(99L), equalTo(90L)); + } +} From 913dab48a3408a81176c63289546826b8733b52c Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Mon, 4 May 2026 10:43:01 +0300 Subject: [PATCH 22/34] Gradle 9.5.0 --- gradle/wrapper/gradle-wrapper.jar | Bin 48966 -> 48462 bytes gradle/wrapper/gradle-wrapper.properties | 4 ++- gradlew | 2 +- gradlew.bat | 31 ++++++++--------------- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d997cfc60f4cff0e7451d19d49a82fa986695d07..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 39760 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 e(*aw}>J`&Ep$5$o2mVP)i30-M3~u@DBh0 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 delta 40115 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 e{Sg5G5zENPNVU~b5#<2@M#Os+0czL&{q{eZe&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,7 +65,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line @@ -73,21 +73,10 @@ goto fail @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% From 8d24facd3ce05f437d4b16ea87115289778d3fab Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 09:06:46 +0300 Subject: [PATCH 23/34] Added task 3777 --- .../Solution.java | 61 ++++++++++ .../readme.md | 73 ++++++++++++ .../SolutionTest.java | 108 ++++++++++++++++++ 3 files changed, 242 insertions(+) create mode 100644 src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/Solution.java create mode 100644 src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/readme.md create mode 100644 src/test/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/Solution.java b/src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/Solution.java new file mode 100644 index 000000000..f09e8619d --- /dev/null +++ b/src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/Solution.java @@ -0,0 +1,61 @@ +package g3701_3800.s3777_minimum_deletions_to_make_alternating_substring; + +// #Hard #String #Segment_Tree #Senior_Staff #Weekly_Contest_480 +// #2026_05_06_Time_35_ms_(100.00%)_Space_247.99_MB_(90.00%) + +import java.util.Arrays; + +public class Solution { + private int[] f; + private int n; + + private void add(int i, int v) { + for (i++; i <= n; i += i & -i) { + f[i] += v; + } + } + + private int sum(int i) { + int s = 0; + for (i++; i > 0; i -= i & -i) { + s += f[i]; + } + return s; + } + + public int[] minDeletions(String s, int[][] q) { + char[] a = s.toCharArray(); + n = a.length; + f = new int[n + 1]; + for (int i = 0; i + 1 < n; i++) { + if (a[i] == a[i + 1]) { + add(i, 1); + } + } + int[] ans = new int[q.length]; + int k = 0; + for (int[] e : q) { + if (e[0] == 1) { + int j = e[1]; + if (j > 0 && a[j] == a[j - 1]) { + add(j - 1, -1); + } + if (j + 1 < n && a[j] == a[j + 1]) { + add(j, -1); + } + a[j] = a[j] == 'A' ? 'B' : 'A'; + if (j > 0 && a[j] == a[j - 1]) { + add(j - 1, 1); + } + if (j + 1 < n && a[j] == a[j + 1]) { + add(j, 1); + } + } else { + int l = e[1]; + int r = e[2]; + ans[k++] = l < r ? sum(r - 1) - sum(l - 1) : 0; + } + } + return Arrays.copyOf(ans, k); + } +} diff --git a/src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/readme.md b/src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/readme.md new file mode 100644 index 000000000..d2790092d --- /dev/null +++ b/src/main/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/readme.md @@ -0,0 +1,73 @@ +3777\. Minimum Deletions to Make Alternating Substring + +Hard + +You are given a string `s` of length `n` consisting only of the characters `'A'` and `'B'`. + +You are also given a 2D integer array `queries` of length `q`, where each `queries[i]` is one of the following: + +* `[1, j]`: **Flip** the character at index `j` of `s` i.e. `'A'` changes to `'B'` (and vice versa). This operation mutates `s` and affects subsequent queries. +* `[2, l, r]`: **Compute** the **minimum** number of character deletions required to make the **substring** `s[l..r]` **alternating**. This operation does not modify `s`; the length of `s` remains `n`. + +A **substring** is **alternating** if no two **adjacent** characters are **equal**. A substring of length 1 is always alternating. + +Return an integer array `answer`, where `answer[i]` is the result of the ith query of type `[2, l, r]`. + +**Example 1:** + +**Input:** s = "ABA", queries = [[2,1,2],[1,1],[2,0,2]] + +**Output:** [0,2] + +**Explanation:** + +| i | queries[i] | j | l | r | s before query | s[l..r] | Result | Answer | +|---|------------|---|---|---|----------------|---------|--------|--------| +| 0 | [2, 1, 2] | - | 1 | 2 | `"ABA"` | `"BA"` | Already alternating | 0 | +| 1 | [1, 1] | 1 | - | - | `"ABA"` | - | Flip `s[1]` from `'B'` to `'A'` | - | +| 2 | [2, 0, 2] | - | 0 | 2 | `"AAA"` | `"AAA"` | Delete any two `'A'`s to get `"A"` | 2 | + +Thus, the answer is `[0, 2]`. + +**Example 2:** + +**Input:** s = "ABB", queries = [[2,0,2],[1,2],[2,0,2]] + +**Output:** [1,0] + +**Explanation:** + +| i | queries[i] | j | l | r | s before query | s[l..r] | Result | Answer | +|---|------------|---|---|---|----------------|---------|--------|--------| +| 0 | [2, 0, 2] | - | 0 | 2 | `"ABB"` | `"ABB"` | Delete one `'B'` to get `"AB"` | 1 | +| 1 | [1, 2] | 2 | - | - | `"ABB"` | - | Flip `s[2]` from `'B'` to `'A'` | - | +| 2 | [2, 0, 2] | - | 0 | 2 | `"ABA"` | `"ABA"` | Already alternating | 0 | + +Thus, the answer is `[1, 0]`. + +**Example 3:** + +**Input:** s = "BABA", queries = [[2,0,3],[1,1],[2,1,3]] + +**Output:** [0,1] + +**Explanation:** + +| i | queries[i] | j | l | r | s before query | s[l..r] | Result | Answer | +|---|------------|---|---|---|----------------|---------|--------|--------| +| 0 | [2, 0, 3] | - | 0 | 3 | `"BABA"` | `"BABA"`| Already alternating | 0 | +| 1 | [1, 1] | 1 | - | - | `"BABA"` | - | Flip `s[1]` from `'A'` to `'B'` | - | +| 2 | [2, 1, 3] | - | 1 | 3 | `"BBBA"` | `"BBA"` | Delete one `'B'` to get `"BA"` | 1 | + +Thus, the answer is `[0, 1]`. + +**Constraints:** + +* 1 <= n == s.length <= 105 +* `s[i]` is either `'A'` or `'B'`. +* 1 <= q == queries.length <= 105 +* `queries[i].length == 2` or `3` + * `queries[i] == [1, j]` or, + * `queries[i] == [2, l, r]` + * `0 <= j <= n - 1` + * `0 <= l <= r <= n - 1` \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/SolutionTest.java b/src/test/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/SolutionTest.java new file mode 100644 index 000000000..7c01f6150 --- /dev/null +++ b/src/test/java/g3701_3800/s3777_minimum_deletions_to_make_alternating_substring/SolutionTest.java @@ -0,0 +1,108 @@ +package g3701_3800.s3777_minimum_deletions_to_make_alternating_substring; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minDeletions() { + assertThat( + new Solution().minDeletions("ABA", new int[][] {{2, 1, 2}, {1, 1}, {2, 0, 2}}), + equalTo(new int[] {0, 2})); + } + + @Test + void minDeletions2() { + assertThat( + new Solution().minDeletions("ABB", new int[][] {{2, 0, 2}, {1, 2}, {2, 0, 2}}), + equalTo(new int[] {1, 0})); + } + + @Test + void minDeletions3() { + assertThat( + new Solution().minDeletions("BABA", new int[][] {{2, 0, 3}, {1, 1}, {2, 1, 3}}), + equalTo(new int[] {0, 1})); + } + + @Test + void minDeletions4() { + // j == 0, tests j > 0 false branch + // "AAB" -> flip index 0 -> "BAB" + assertThat( + new Solution().minDeletions("AAB", new int[][] {{2, 0, 2}, {1, 0}, {2, 0, 2}}), + equalTo(new int[] {1, 0})); + } + + @Test + void minDeletions5() { + // j == n-1, tests j + 1 < n false branch + // "ABB" -> flip index 2 -> "ABA" + assertThat( + new Solution().minDeletions("ABB", new int[][] {{2, 0, 2}, {1, 2}, {2, 0, 2}}), + equalTo(new int[] {1, 0})); + } + + @Test + void minDeletions6() { + // tests a[j] == 'A' false branch (i.e., 'B' -> 'A') + // "BAA" -> flip index 0 (B) -> "AAA" + assertThat( + new Solution().minDeletions("BAA", new int[][] {{2, 0, 2}, {1, 0}, {2, 0, 2}}), + equalTo(new int[] {1, 2})); + } + + @Test + void minDeletions7() { + // tests a[j] == 'A' true branch + // "AAA" -> flip index 1 -> "ABA" + assertThat( + new Solution().minDeletions("AAA", new int[][] {{2, 0, 2}, {1, 1}, {2, 0, 2}}), + equalTo(new int[] {2, 0})); + } + + @Test + void minDeletions8() { + // tests l < r false branch + assertThat( + new Solution().minDeletions("AAB", new int[][] {{2, 1, 1}, {2, 0, 0}}), + equalTo(new int[] {0, 0})); + } + + @Test + void minDeletions9() { + // larger string to exercise BIT loops more + // "AABBA" -> pairs at index 0 (AA), 2 (BB) + assertThat( + new Solution() + .minDeletions( + "AABBA", + new int[][] { + {2, 0, 4}, {1, 2}, {2, 0, 4}, {1, 0}, {2, 0, 4}, {2, 1, 3} + }), + equalTo(new int[] {2, 2, 1, 1})); + } + + @Test + void minDeletions10() { + // All neighbor pairs match + // "AAAA" -> flip middle to break/create pairs + assertThat( + new Solution() + .minDeletions( + "AAAA", new int[][] {{2, 0, 3}, {1, 2}, {2, 0, 3}, {2, 0, 1}}), + equalTo(new int[] {3, 1, 1})); + } + + @Test + void minDeletions11() { + // No initial neighbor pairs - covers a[i] == a[i+1] false branch dominantly + assertThat( + new Solution() + .minDeletions( + "ABABAB", new int[][] {{2, 0, 5}, {1, 3}, {2, 0, 5}, {2, 2, 4}}), + equalTo(new int[] {0, 2, 2})); + } +} From 0ed54c51a6ed330445823789a599b69a3b00a6f2 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 09:55:53 +0300 Subject: [PATCH 24/34] Added task 3779 --- .../Solution.java | 19 ++++++++ .../readme.md | 46 +++++++++++++++++++ .../SolutionTest.java | 23 ++++++++++ 3 files changed, 88 insertions(+) create mode 100644 src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/Solution.java create mode 100644 src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/readme.md create mode 100644 src/test/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/Solution.java b/src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/Solution.java new file mode 100644 index 000000000..424c409bf --- /dev/null +++ b/src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/Solution.java @@ -0,0 +1,19 @@ +package g3701_3800.s3779_minimum_number_of_operations_to_have_distinct_elements; + +// #Medium #Array #Hash_Table #Senior #Biweekly_Contest_172 +// #2026_05_06_Time_4_ms_(99.25%)_Space_132.03_MB_(83.46%) + +public class Solution { + public int minOperations(int[] nums) { + boolean[] seen = new boolean[100001]; + int i = nums.length - 1; + while (i >= 0) { + if (seen[nums[i]]) { + break; + } + seen[nums[i]] = true; + i--; + } + return (i + 3) / 3; + } +} diff --git a/src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/readme.md b/src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/readme.md new file mode 100644 index 000000000..a53319d6d --- /dev/null +++ b/src/main/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/readme.md @@ -0,0 +1,46 @@ +3779\. Minimum Number of Operations to Have Distinct Elements + +Medium + +You are given an integer array `nums`. + +In one operation, you remove the **first three elements** of the current array. If there are fewer than three elements remaining, **all** remaining elements are removed. + +Repeat this operation until the array is empty or contains no duplicate values. + +Return an integer denoting the number of operations required. + +**Example 1:** + +**Input:** nums = [3,8,3,6,5,8] + +**Output:** 1 + +**Explanation:** + +In the first operation, we remove the first three elements. The remaining elements `[6, 5, 8]` are all distinct, so we stop. Only one operation is needed. + +**Example 2:** + +**Input:** nums = [2,2] + +**Output:** 1 + +**Explanation:** + +After one operation, the array becomes empty, which meets the stopping condition. + +**Example 3:** + +**Input:** nums = [4,3,5,1,2] + +**Output:** 0 + +**Explanation:** + +All elements in the array are distinct, therefore no operations are needed. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 105 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/SolutionTest.java b/src/test/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/SolutionTest.java new file mode 100644 index 000000000..758cedfa7 --- /dev/null +++ b/src/test/java/g3701_3800/s3779_minimum_number_of_operations_to_have_distinct_elements/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3779_minimum_number_of_operations_to_have_distinct_elements; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minOperations() { + assertThat(new Solution().minOperations(new int[] {3, 8, 3, 6, 5, 8}), equalTo(1)); + } + + @Test + void minOperations2() { + assertThat(new Solution().minOperations(new int[] {2, 2}), equalTo(1)); + } + + @Test + void minOperations3() { + assertThat(new Solution().minOperations(new int[] {4, 3, 5, 1, 2}), equalTo(0)); + } +} From 8cc90ef7cc7b74c0383b0b6d85e269bcd38c0f5c Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 11:48:17 +0300 Subject: [PATCH 25/34] Added tasks 3780, 3781, 3782 --- .../Solution.java | 51 ++++++++++++++++++ .../readme.md | 39 ++++++++++++++ .../Solution.java | 26 +++++++++ .../readme.md | 43 +++++++++++++++ .../Solution.java | 11 ++++ .../readme.md | 53 +++++++++++++++++++ .../SolutionTest.java | 18 +++++++ .../SolutionTest.java | 18 +++++++ .../SolutionTest.java | 23 ++++++++ 9 files changed, 282 insertions(+) create mode 100644 src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/Solution.java create mode 100644 src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/readme.md create mode 100644 src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/Solution.java create mode 100644 src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/readme.md create mode 100644 src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/Solution.java create mode 100644 src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/readme.md create mode 100644 src/test/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3781_maximum_score_after_binary_swaps/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/Solution.java b/src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/Solution.java new file mode 100644 index 000000000..44c78a026 --- /dev/null +++ b/src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/Solution.java @@ -0,0 +1,51 @@ +package g3701_3800.s3780_maximum_sum_of_three_numbers_divisible_by_three; + +// #Medium #Array #Sorting #Greedy #Heap_Priority_Queue #Senior #Biweekly_Contest_172 +// #2026_05_06_Time_7_ms_(98.17%)_Space_168.14_MB_(89.91%) + +public class Solution { + public int maximumSum(int[] nums) { + int[][] group = new int[3][3]; + for (int num : nums) { + int m = num % 3; + int max1 = group[m][0]; + int max2 = group[m][1]; + int max3 = group[m][2]; + if (num >= max1) { + max3 = max2; + max2 = max1; + max1 = num; + } else if (num >= max2) { + max3 = max2; + max2 = num; + } else if (num > max3) { + max3 = num; + } + group[m][0] = max1; + group[m][1] = max2; + group[m][2] = max3; + } + int res = 0; + for (int[] g : group) { + int sum = 0; + for (int i = 0; i < 3; i += 1) { + if (g[i] == 0) { + sum = 0; + break; + } + sum += g[i]; + } + res = Math.max(res, sum); + } + int max = 0; + for (int[] g : group) { + if (g[0] == 0) { + max = 0; + break; + } + max += g[0]; + } + res = Math.max(res, max); + return res; + } +} diff --git a/src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/readme.md b/src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/readme.md new file mode 100644 index 000000000..fce6203bd --- /dev/null +++ b/src/main/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/readme.md @@ -0,0 +1,39 @@ +3780\. Maximum Sum of Three Numbers Divisible by Three + +Medium + +You are given an integer array `nums`. + +Your task is to choose **exactly three** integers from `nums` such that their sum is divisible by three. + +Return the **maximum** possible sum of such a triplet. If no such triplet exists, return 0. + +**Example 1:** + +**Input:** nums = [4,2,3,1] + +**Output:** 9 + +**Explanation:** + +The valid triplets whose sum is divisible by 3 are: + +* `(4, 2, 3)` with a sum of `4 + 2 + 3 = 9`. +* `(2, 3, 1)` with a sum of `2 + 3 + 1 = 6`. + +Thus, the answer is 9. + +**Example 2:** + +**Input:** nums = [2,1,5] + +**Output:** 0 + +**Explanation:** + +No triplet forms a sum divisible by 3, so the answer is 0. + +**Constraints:** + +* 3 <= nums.length <= 105 +* 1 <= nums[i] <= 105 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/Solution.java b/src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/Solution.java new file mode 100644 index 000000000..5029d3fec --- /dev/null +++ b/src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/Solution.java @@ -0,0 +1,26 @@ +package g3701_3800.s3781_maximum_score_after_binary_swaps; + +// #Medium #Array #String #Greedy #Heap_Priority_Queue #Staff #Biweekly_Contest_172 +// #2026_05_06_Time_39_ms_(96.47%)_Space_118.00_MB_(29.41%) + +import java.util.PriorityQueue; + +public class Solution { + public long maximumScore(int[] nums, String s) { + long sum = 0; + PriorityQueue pq = new PriorityQueue<>((a, b) -> b - a); + for (int i = 0; i < nums.length; i++) { + if (s.charAt(i) == '1') { + if (pq.isEmpty() || pq.peek() <= nums[i]) { + sum += nums[i]; + } else { + sum += pq.poll(); + pq.add(nums[i]); + } + } else { + pq.add(nums[i]); + } + } + return sum; + } +} diff --git a/src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/readme.md b/src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/readme.md new file mode 100644 index 000000000..af9c40b40 --- /dev/null +++ b/src/main/java/g3701_3800/s3781_maximum_score_after_binary_swaps/readme.md @@ -0,0 +1,43 @@ +3781\. Maximum Score After Binary Swaps + +Medium + +You are given an integer array `nums` of length `n` and a binary string `s` of the same length. + +Initially, your score is 0. Each index `i` where `s[i] = '1'` contributes `nums[i]` to the score. + +You may perform **any** number of operations (including zero). In one operation, you may choose an index `i` such that `0 <= i < n - 1`, where `s[i] = '0'`, and `s[i + 1] = '1'`, and swap these two characters. + +Return an integer denoting the **maximum possible score** you can achieve. + +**Example 1:** + +**Input:** nums = [2,1,5,2,3], s = "01010" + +**Output:** 7 + +**Explanation:** + +We can perform the following swaps: + +* Swap at index `i = 0`: `"01010"` changes to `"10010"` +* Swap at index `i = 2`: `"10010"` changes to `"10100"` + +Positions 0 and 2 contain `'1'`, contributing `nums[0] + nums[2] = 2 + 5 = 7`. This is maximum score achievable. + +**Example 2:** + +**Input:** nums = [4,7,2,9], s = "0000" + +**Output:** 0 + +**Explanation:** + +There are no `'1'` characters in `s`, so no swaps can be performed. The score remains 0. + +**Constraints:** + +* `n == nums.length == s.length` +* 1 <= n <= 105 +* 1 <= nums[i] <= 109 +* `s[i]` is either `'0'` or `'1'` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/Solution.java b/src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/Solution.java new file mode 100644 index 000000000..7da4eac23 --- /dev/null +++ b/src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/Solution.java @@ -0,0 +1,11 @@ +package g3701_3800.s3782_last_remaining_integer_after_alternating_deletion_operations; + +// #Hard #Math #Recursion #Senior_Staff #Biweekly_Contest_172 +// #2026_05_06_Time_1_ms_(100.00%)_Space_43.05_MB_(9.38%) + +public class Solution { + public long lastInteger(long n) { + final long mask = 0xAAAAAAAAAAAAAAAL; + return ((n - 1) & mask) + 1; + } +} diff --git a/src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/readme.md b/src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/readme.md new file mode 100644 index 000000000..7278cda22 --- /dev/null +++ b/src/main/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/readme.md @@ -0,0 +1,53 @@ +3782\. Last Remaining Integer After Alternating Deletion Operations + +Hard + +You are given an integer `n`. + +We write the integers from 1 to `n` in a sequence from left to right. Then, **alternately** apply the following two operations until only one integer remains, starting with operation 1: + +* **Operation 1**: Starting from the left, delete every second number. +* **Operation 2**: Starting from the right, delete every second number. + +Return the last remaining integer. + +**Example 1:** + +**Input:** n = 8 + +**Output:** 3 + +**Explanation:** + +* Write `[1, 2, 3, 4, 5, 6, 7, 8]` in a sequence. +* Starting from the left, we delete every second number: [1, **2**, 3, **4**, 5, **6**, 7, **8**]. The remaining integers are `[1, 3, 5, 7]`. +* Starting from the right, we delete every second number: [**1**, 3, **5**, 7]. The remaining integers are `[3, 7]`. +* Starting from the left, we delete every second number: [3, **7**]. The remaining integer is `[3]`. + +**Example 2:** + +**Input:** n = 5 + +**Output:** 1 + +**Explanation:** + +* Write `[1, 2, 3, 4, 5]` in a sequence. +* Starting from the left, we delete every second number: [1, **2**, 3, **4**, 5]. The remaining integers are `[1, 3, 5]`. +* Starting from the right, we delete every second number: [1, **3**, 5]. The remaining integers are `[1, 5]`. +* Starting from the left, we delete every second number: [1, **5**]. The remaining integer is `[1]`. + +**Example 3:** + +**Input:** n = 1 + +**Output:** 1 + +**Explanation:** + +* Write `[1]` in a sequence. +* The last remaining integer is 1. + +**Constraints:** + +* 1 <= n <= 1015 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/SolutionTest.java b/src/test/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/SolutionTest.java new file mode 100644 index 000000000..54a0a6a6d --- /dev/null +++ b/src/test/java/g3701_3800/s3780_maximum_sum_of_three_numbers_divisible_by_three/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3780_maximum_sum_of_three_numbers_divisible_by_three; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maximumSum() { + assertThat(new Solution().maximumSum(new int[] {4, 2, 3, 1}), equalTo(9)); + } + + @Test + void maximumSum2() { + assertThat(new Solution().maximumSum(new int[] {2, 1, 5}), equalTo(0)); + } +} diff --git a/src/test/java/g3701_3800/s3781_maximum_score_after_binary_swaps/SolutionTest.java b/src/test/java/g3701_3800/s3781_maximum_score_after_binary_swaps/SolutionTest.java new file mode 100644 index 000000000..dbe6b4895 --- /dev/null +++ b/src/test/java/g3701_3800/s3781_maximum_score_after_binary_swaps/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3781_maximum_score_after_binary_swaps; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maximumScore() { + assertThat(new Solution().maximumScore(new int[] {2, 1, 5, 2, 3}, "01010"), equalTo(7L)); + } + + @Test + void maximumScore2() { + assertThat(new Solution().maximumScore(new int[] {4, 7, 2, 9}, "0000"), equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/SolutionTest.java b/src/test/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/SolutionTest.java new file mode 100644 index 000000000..6ac50cda0 --- /dev/null +++ b/src/test/java/g3701_3800/s3782_last_remaining_integer_after_alternating_deletion_operations/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3782_last_remaining_integer_after_alternating_deletion_operations; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void lastInteger() { + assertThat(new Solution().lastInteger(8L), equalTo(3L)); + } + + @Test + void lastInteger2() { + assertThat(new Solution().lastInteger(5L), equalTo(1L)); + } + + @Test + void lastInteger3() { + assertThat(new Solution().lastInteger(1L), equalTo(1L)); + } +} From c98d48db4c642669ab4065e72cb2609e3a729b90 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 17:13:49 +0300 Subject: [PATCH 26/34] Updated readme --- README.md | 316 +++++++++++++++++++++++++++--------------------------- 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/README.md b/README.md index c7742d5ce..9fe99c3db 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,6 @@ implementation 'com.github.javadev:leetcode-in-java:1.49' > ["For coding interview preparation, LeetCode is one of the best online resource providing a rich library of more than 300 real coding interview questions for you to practice from using one of the 7 supported languages - C, C++, Java, Python, C#, JavaScript, Ruby."](https://www.quora.com/How-effective-is-Leetcode-for-preparing-for-technical-interviews) ## -* [Data Structure II](#data-structure-ii) * [Algorithm I](#algorithm-i) * [Algorithm II](#algorithm-ii) * [Binary Search I](#binary-search-i) @@ -49,163 +48,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.49' * [Udemy](#udemy) * [Top Interview 150](#top-interview-150) * [Data Structure I](#data-structure-i) - -### Data Structure II - -#### Day 1 Array - -| | | | | | -|-|-|-|-|-|- -| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 -| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 -| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 - -#### Day 2 Array - -| | | | | | -|-|-|-|-|-|- -| 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 -| 0706 |[Design HashMap](src/main/java/g0701_0800/s0706_design_hashmap/MyHashMap.java)| Easy | Array, Hash_Table, Design, Linked_List, Hash_Function | 13 | 95.71 - -#### Day 3 Array - -| | | | | | -|-|-|-|-|-|- -| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 -| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 -| 0059 |[Spiral Matrix II](src/main/java/g0001_0100/s0059_spiral_matrix_ii/Solution.java)| Medium | Array, Matrix, Simulation | 0 | 100.00 - -#### Day 4 Array - -| | | | | | -|-|-|-|-|-|- -| 0240 |[Search a 2D Matrix II](src/main/java/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Big_O_Time_O(n+m)_Space_O(1) | 5 | 99.92 -| 0435 |[Non-overlapping Intervals](src/main/java/g0401_0500/s0435_non_overlapping_intervals/Solution.java)| Medium | Array, Dynamic_Programming, Sorting, Greedy, LeetCode_75_Intervals | 96 | 47.37 - -#### Day 5 Array - -| | | | | | -|-|-|-|-|-|- -| 0334 |[Increasing Triplet Subsequence](src/main/java/g0301_0400/s0334_increasing_triplet_subsequence/Solution.java)| Medium | Array, Greedy, LeetCode_75_Array/String | 2 | 99.33 -| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 -| 0560 |[Subarray Sum Equals K](src/main/java/g0501_0600/s0560_subarray_sum_equals_k/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Prefix_Sum, Big_O_Time_O(n)_Space_O(n) | 22 | 95.17 - -#### Day 6 String - -| | | | | | -|-|-|-|-|-|- -| 0415 |[Add Strings](src/main/java/g0401_0500/s0415_add_strings/Solution.java)| Easy | String, Math, Simulation | 3 | 82.41 -| 0409 |[Longest Palindrome](src/main/java/g0401_0500/s0409_longest_palindrome/Solution.java)| Easy | String, Hash_Table, Greedy | 2 | 92.90 - -#### Day 7 String - -| | | | | | -|-|-|-|-|-|- -| 0290 |[Word Pattern](src/main/java/g0201_0300/s0290_word_pattern/Solution.java)| Easy | String, Hash_Table | 0 | 100.00 -| 0763 |[Partition Labels](src/main/java/g0701_0800/s0763_partition_labels/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Greedy, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 100.00 - -#### Day 8 String - -| | | | | | -|-|-|-|-|-|- -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 -| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 - -#### Day 9 String - -| | | | | | -|-|-|-|-|-|- -| 0187 |[Repeated DNA Sequences](src/main/java/g0101_0200/s0187_repeated_dna_sequences/Solution.java)| Medium | String, Hash_Table, Bit_Manipulation, Sliding_Window, Hash_Function, Rolling_Hash | 29 | 77.11 -| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 - -#### Day 10 Linked List - -| | | | | | -|-|-|-|-|-|- -| 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 -| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 - -#### Day 11 Linked List - -| | | | | | -|-|-|-|-|-|- -| 0160 |[Intersection of Two Linked Lists](src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(M+N)_Space_O(1) | 1 | 99.92 -| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 - -#### Day 12 Linked List - -| | | | | | -|-|-|-|-|-|- -| 0024 |[Swap Nodes in Pairs](src/main/java/g0001_0100/s0024_swap_nodes_in_pairs/Solution.java)| Medium | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 - -#### Day 13 Linked List - -| | | | | | -|-|-|-|-|-|- -| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 -| 0143 |[Reorder List](src/main/java/g0101_0200/s0143_reorder_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List, Recursion | 2 | 72.59 - -#### Day 14 Stack Queue - -| | | | | | -|-|-|-|-|-|- -| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 -| 1249 |[Minimum Remove to Make Valid Parentheses](src/main/java/g1201_1300/s1249_minimum_remove_to_make_valid_parentheses/Solution.java)| Medium | String, Stack | 13 | 94.62 -| 1823 |[Find the Winner of the Circular Game](src/main/java/g1801_1900/s1823_find_the_winner_of_the_circular_game/Solution.java)| Medium | Array, Math, Simulation, Recursion, Queue | 3 | 64.85 - -#### Day 15 Tree - -| | | | | | -|-|-|-|-|-|- -| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 -| 0105 |[Construct Binary Tree from Preorder and Inorder Traversal](src/main/java/g0101_0200/s0105_construct_binary_tree_from_preorder_and_inorder_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer, Big_O_Time_O(N)_Space_O(N) | 1 | 96.33 -| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 - -#### Day 16 Tree - -| | | | | | -|-|-|-|-|-|- -| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 -| 0113 |[Path Sum II](src/main/java/g0101_0200/s0113_path_sum_ii/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Backtracking | 1 | 100.00 -| 0450 |[Delete Node in a BST](src/main/java/g0401_0500/s0450_delete_node_in_a_bst/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree, LeetCode_75_Binary_Search_Tree | 0 | 100.00 - -#### Day 17 Tree - -| | | | | | -|-|-|-|-|-|- -| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 - -#### Day 18 Tree - -| | | | | | -|-|-|-|-|-|- -| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 -| 0297 |[Serialize and Deserialize Binary Tree](src/main/java/g0201_0300/s0297_serialize_and_deserialize_binary_tree/Codec.java)| Hard | String, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Design | 7 | 98.13 - -#### Day 19 Graph - -| | | | | | -|-|-|-|-|-|- -| 0997 |[Find the Town Judge](src/main/java/g0901_1000/s0997_find_the_town_judge/Solution.java)| Easy | Array, Hash_Table, Graph | 3 | 80.64 -| 1557 |[Minimum Number of Vertices to Reach All Nodes](src/main/java/g1501_1600/s1557_minimum_number_of_vertices_to_reach_all_nodes/Solution.java)| Medium | Graph | 8 | 99.94 -| 0841 |[Keys and Rooms](src/main/java/g0801_0900/s0841_keys_and_rooms/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 3 | 51.54 - -#### Day 20 Heap Priority Queue - -| | | | | | -|-|-|-|-|-|- -| 0215 |[Kth Largest Element in an Array](src/main/java/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, LeetCode_75_Heap/Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 5 | 70.82 -| 0347 |[Top K Frequent Elements](src/main/java/g0301_0400/s0347_top_k_frequent_elements/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Divide_and_Conquer, Quickselect, Bucket_Sort, Big_O_Time_O(n\*log(n))_Space_O(k) | 9 | 97.30 - -#### Day 21 Heap Priority Queue - -| | | | | | -|-|-|-|-|-|- -| 0451 |[Sort Characters By Frequency](src/main/java/g0401_0500/s0451_sort_characters_by_frequency/Solution.java)| Medium | String, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Bucket_Sort | 13 | 89.63 -| 0973 |[K Closest Points to Origin](src/main/java/g0901_1000/s0973_k_closest_points_to_origin/Solution.java)| Medium | Array, Math, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Geometry, Quickselect | 4 | 98.26 +* [Data Structure II](#data-structure-ii) ### Algorithm I @@ -2112,6 +1955,163 @@ implementation 'com.github.javadev:leetcode-in-java:1.49' | 0653 |[Two Sum IV - Input is a BST](src/main/java/g0601_0700/s0653_two_sum_iv_input_is_a_bst/Solution.java)| Easy | Hash_Table, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Two_Pointers, Binary_Search_Tree | 5 | 74.23 | 0235 |[Lowest Common Ancestor of a Binary Search Tree](src/main/java/g0201_0300/s0235_lowest_common_ancestor_of_a_binary_search_tree/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 4 | 100.00 +### Data Structure II + +#### Day 1 Array + +| | | | | | +|-|-|-|-|-|- +| 0136 |[Single Number](src/main/java/g0101_0200/s0136_single_number/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, LeetCode_75_Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 99.86 +| 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.89 +| 0015 |[3Sum](src/main/java/g0001_0100/s0015_3sum/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n\*log(n))_Space_O(n^2) | 29 | 72.02 + +#### Day 2 Array + +| | | | | | +|-|-|-|-|-|- +| 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 +| 0706 |[Design HashMap](src/main/java/g0701_0800/s0706_design_hashmap/MyHashMap.java)| Easy | Array, Hash_Table, Design, Linked_List, Hash_Function | 13 | 95.71 + +#### Day 3 Array + +| | | | | | +|-|-|-|-|-|- +| 0119 |[Pascal's Triangle II](src/main/java/g0101_0200/s0119_pascals_triangle_ii/Solution.java)| Easy | Array, Dynamic_Programming | 0 | 100.00 +| 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 +| 0059 |[Spiral Matrix II](src/main/java/g0001_0100/s0059_spiral_matrix_ii/Solution.java)| Medium | Array, Matrix, Simulation | 0 | 100.00 + +#### Day 4 Array + +| | | | | | +|-|-|-|-|-|- +| 0240 |[Search a 2D Matrix II](src/main/java/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Big_O_Time_O(n+m)_Space_O(1) | 5 | 99.92 +| 0435 |[Non-overlapping Intervals](src/main/java/g0401_0500/s0435_non_overlapping_intervals/Solution.java)| Medium | Array, Dynamic_Programming, Sorting, Greedy, LeetCode_75_Intervals | 96 | 47.37 + +#### Day 5 Array + +| | | | | | +|-|-|-|-|-|- +| 0334 |[Increasing Triplet Subsequence](src/main/java/g0301_0400/s0334_increasing_triplet_subsequence/Solution.java)| Medium | Array, Greedy, LeetCode_75_Array/String | 2 | 99.33 +| 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, LeetCode_75_Array/String, Big_O_Time_O(n^2)_Space_O(n) | 1 | 99.66 +| 0560 |[Subarray Sum Equals K](src/main/java/g0501_0600/s0560_subarray_sum_equals_k/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Prefix_Sum, Big_O_Time_O(n)_Space_O(n) | 22 | 95.17 + +#### Day 6 String + +| | | | | | +|-|-|-|-|-|- +| 0415 |[Add Strings](src/main/java/g0401_0500/s0415_add_strings/Solution.java)| Easy | String, Math, Simulation | 3 | 82.41 +| 0409 |[Longest Palindrome](src/main/java/g0401_0500/s0409_longest_palindrome/Solution.java)| Easy | String, Hash_Table, Greedy | 2 | 92.90 + +#### Day 7 String + +| | | | | | +|-|-|-|-|-|- +| 0290 |[Word Pattern](src/main/java/g0201_0300/s0290_word_pattern/Solution.java)| Easy | String, Hash_Table | 0 | 100.00 +| 0763 |[Partition Labels](src/main/java/g0701_0800/s0763_partition_labels/Solution.java)| Medium | Top_100_Liked_Questions, String, Hash_Table, Greedy, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 2 | 100.00 + +#### Day 8 String + +| | | | | | +|-|-|-|-|-|- +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 +| 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 + +#### Day 9 String + +| | | | | | +|-|-|-|-|-|- +| 0187 |[Repeated DNA Sequences](src/main/java/g0101_0200/s0187_repeated_dna_sequences/Solution.java)| Medium | String, Hash_Table, Bit_Manipulation, Sliding_Window, Hash_Function, Rolling_Hash | 29 | 77.11 +| 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 + +#### Day 10 Linked List + +| | | | | | +|-|-|-|-|-|- +| 0002 |[Add Two Numbers](src/main/java/g0001_0100/s0002_add_two_numbers/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Math, Linked_List, Recursion, Big_O_Time_O(max(N,M))_Space_O(max(N,M)), AI_can_be_used_to_solve_the_task | 1 | 100.00 +| 0142 |[Linked List Cycle II](src/main/java/g0101_0200/s0142_linked_list_cycle_ii/Solution.java)| Medium | Top_100_Liked_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 + +#### Day 11 Linked List + +| | | | | | +|-|-|-|-|-|- +| 0160 |[Intersection of Two Linked Lists](src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Hash_Table, Two_Pointers, Linked_List, Big_O_Time_O(M+N)_Space_O(1) | 1 | 99.92 +| 0082 |[Remove Duplicates from Sorted List II](src/main/java/g0001_0100/s0082_remove_duplicates_from_sorted_list_ii/Solution.java)| Medium | Two_Pointers, Linked_List | 0 | 100.00 + +#### Day 12 Linked List + +| | | | | | +|-|-|-|-|-|- +| 0024 |[Swap Nodes in Pairs](src/main/java/g0001_0100/s0024_swap_nodes_in_pairs/Solution.java)| Medium | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 +| 0707 |[Design Linked List](src/main/java/g0701_0800/s0707_design_linked_list/MyLinkedList.java)| Medium | Design, Linked_List | 10 | 70.60 + +#### Day 13 Linked List + +| | | | | | +|-|-|-|-|-|- +| 0025 |[Reverse Nodes in k-Group](src/main/java/g0001_0100/s0025_reverse_nodes_in_k_group/Solution.java)| Hard | Top_100_Liked_Questions, Linked_List, Recursion, Big_O_Time_O(n)_Space_O(k) | 0 | 100.00 +| 0143 |[Reorder List](src/main/java/g0101_0200/s0143_reorder_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List, Recursion | 2 | 72.59 + +#### Day 14 Stack Queue + +| | | | | | +|-|-|-|-|-|- +| 0155 |[Min Stack](src/main/java/g0101_0200/s0155_min_stack/MinStack.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Stack, Design, Big_O_Time_O(1)_Space_O(N) | 4 | 96.54 +| 1249 |[Minimum Remove to Make Valid Parentheses](src/main/java/g1201_1300/s1249_minimum_remove_to_make_valid_parentheses/Solution.java)| Medium | String, Stack | 13 | 94.62 +| 1823 |[Find the Winner of the Circular Game](src/main/java/g1801_1900/s1823_find_the_winner_of_the_circular_game/Solution.java)| Medium | Array, Math, Simulation, Recursion, Queue | 3 | 64.85 + +#### Day 15 Tree + +| | | | | | +|-|-|-|-|-|- +| 0108 |[Convert Sorted Array to Binary Search Tree](src/main/java/g0101_0200/s0108_convert_sorted_array_to_binary_search_tree/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Tree, Binary_Tree, Binary_Search_Tree, Divide_and_Conquer | 0 | 100.00 +| 0105 |[Construct Binary Tree from Preorder and Inorder Traversal](src/main/java/g0101_0200/s0105_construct_binary_tree_from_preorder_and_inorder_traversal/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer, Big_O_Time_O(N)_Space_O(N) | 1 | 96.33 +| 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/java/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/Solution.java)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 + +#### Day 16 Tree + +| | | | | | +|-|-|-|-|-|- +| 0199 |[Binary Tree Right Side View](src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/BFS | 0 | 100.00 +| 0113 |[Path Sum II](src/main/java/g0101_0200/s0113_path_sum_ii/Solution.java)| Medium | Depth_First_Search, Tree, Binary_Tree, Backtracking | 1 | 100.00 +| 0450 |[Delete Node in a BST](src/main/java/g0401_0500/s0450_delete_node_in_a_bst/Solution.java)| Medium | Tree, Binary_Tree, Binary_Search_Tree, LeetCode_75_Binary_Search_Tree | 0 | 100.00 + +#### Day 17 Tree + +| | | | | | +|-|-|-|-|-|- +| 0230 |[Kth Smallest Element in a BST](src/main/java/g0201_0300/s0230_kth_smallest_element_in_a_bst/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 +| 0173 |[Binary Search Tree Iterator](src/main/java/g0101_0200/s0173_binary_search_tree_iterator/BSTIterator.java)| Medium | Tree, Binary_Tree, Stack, Design, Binary_Search_Tree, Iterator | 15 | 100.00 + +#### Day 18 Tree + +| | | | | | +|-|-|-|-|-|- +| 0236 |[Lowest Common Ancestor of a Binary Tree](src/main/java/g0201_0300/s0236_lowest_common_ancestor_of_a_binary_tree/Solution.java)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, LeetCode_75_Binary_Tree/DFS, Big_O_Time_O(n)_Space_O(n) | 6 | 100.00 +| 0297 |[Serialize and Deserialize Binary Tree](src/main/java/g0201_0300/s0297_serialize_and_deserialize_binary_tree/Codec.java)| Hard | String, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Design | 7 | 98.13 + +#### Day 19 Graph + +| | | | | | +|-|-|-|-|-|- +| 0997 |[Find the Town Judge](src/main/java/g0901_1000/s0997_find_the_town_judge/Solution.java)| Easy | Array, Hash_Table, Graph | 3 | 80.64 +| 1557 |[Minimum Number of Vertices to Reach All Nodes](src/main/java/g1501_1600/s1557_minimum_number_of_vertices_to_reach_all_nodes/Solution.java)| Medium | Graph | 8 | 99.94 +| 0841 |[Keys and Rooms](src/main/java/g0801_0900/s0841_keys_and_rooms/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Graph, LeetCode_75_Graphs/DFS | 3 | 51.54 + +#### Day 20 Heap Priority Queue + +| | | | | | +|-|-|-|-|-|- +| 0215 |[Kth Largest Element in an Array](src/main/java/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, LeetCode_75_Heap/Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 5 | 70.82 +| 0347 |[Top K Frequent Elements](src/main/java/g0301_0400/s0347_top_k_frequent_elements/Solution.java)| Medium | Top_100_Liked_Questions, Array, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Divide_and_Conquer, Quickselect, Bucket_Sort, Big_O_Time_O(n\*log(n))_Space_O(k) | 9 | 97.30 + +#### Day 21 Heap Priority Queue + +| | | | | | +|-|-|-|-|-|- +| 0451 |[Sort Characters By Frequency](src/main/java/g0401_0500/s0451_sort_characters_by_frequency/Solution.java)| Medium | String, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Bucket_Sort | 13 | 89.63 +| 0973 |[K Closest Points to Origin](src/main/java/g0901_1000/s0973_k_closest_points_to_origin/Solution.java)| Medium | Array, Math, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Geometry, Quickselect | 4 | 98.26 + ## Contributing Your ideas/fixes/algorithms are more than welcome! From 166c7f4940fd732c0b7acd4a17a5fad5f273698c Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 17:27:52 +0300 Subject: [PATCH 27/34] Update SonarCloud cache action to v5 --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 4632ab757..bcdebc243 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -27,7 +27,7 @@ jobs: java-version: '17' cache: 'gradle' - name: Cache SonarCloud packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar From ce79c2a2abc8acd1acc472c8c7b98e9bc56ebfe0 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 18:01:01 +0300 Subject: [PATCH 28/34] Upgrade CodeQL actions to version 4 --- .github/workflows/codeql.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3aa979cf9..a67949c54 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -63,7 +63,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -91,6 +91,6 @@ jobs: exit 1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{matrix.language}}" From 2eaba8bd47dcc01b18296f2b6ce0b2f90e26d611 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Wed, 6 May 2026 18:01:34 +0300 Subject: [PATCH 29/34] Upgrade actions/checkout from v4 to v5 --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a67949c54..cfda197e8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -59,7 +59,7 @@ jobs: # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL From 65a58cca401774406fa075aaac96310c9f5dc465 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Thu, 7 May 2026 16:33:53 +0300 Subject: [PATCH 30/34] Added task 3771 --- .../Solution.java | 35 ++++++++++++ .../readme.md | 57 +++++++++++++++++++ .../SolutionTest.java | 21 +++++++ 3 files changed, 113 insertions(+) create mode 100644 src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/Solution.java create mode 100644 src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/readme.md create mode 100644 src/test/java/g3701_3800/s3771_total_score_of_dungeon_runs/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/Solution.java b/src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/Solution.java new file mode 100644 index 000000000..99ebaeaa7 --- /dev/null +++ b/src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/Solution.java @@ -0,0 +1,35 @@ +package g3701_3800.s3771_total_score_of_dungeon_runs; + +// #Medium #Array #Binary_Search #Prefix_Sum #Staff #Weekly_Contest_479 +// #2026_05_07_Time_19_ms_(100.00%)_Space_170.56_MB_(72.37%) + +public class Solution { + public long totalScore(int hp, int[] damage, int[] requirement) { + int n = damage.length; + int[] cumulative = new int[n + 1]; + for (int i = n - 1; i >= 0; i--) { + cumulative[i] = cumulative[i + 1] + damage[i]; + } + long soln = 0; + for (int i = n - 1; i >= 0; i--) { + int adjHP = hp - requirement[i] + cumulative[i + 1]; + if (adjHP >= cumulative[i]) { + soln += i - binSearch(cumulative, adjHP, i) + 1; + } + } + return soln; + } + + private int binSearch(int[] arr, int hp, int l) { + int h = 0; + while (h < l) { + int mid = (h + l) >>> 1; + if (arr[mid] > hp) { + h = mid + 1; + } else { + l = mid; + } + } + return h; + } +} diff --git a/src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/readme.md b/src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/readme.md new file mode 100644 index 000000000..340370bc1 --- /dev/null +++ b/src/main/java/g3701_3800/s3771_total_score_of_dungeon_runs/readme.md @@ -0,0 +1,57 @@ +3771\. Total Score of Dungeon Runs + +Medium + +You are given a **positive** integer `hp` and two **positive** **1-indexed** integer arrays `damage` and `requirement`. + +There is a dungeon with `n` trap rooms numbered from 1 to `n`. Entering room `i` reduces your health points by `damage[i]`. After that reduction, if your remaining health points are **at least** `requirement[i]`, you earn **1 point** for that room. + +Let `score(j)` be the number of **points** you get if you start with `hp` health points and enter the rooms `j`, `j + 1`, ..., `n` in this order. + +Return the integer `score(1) + score(2) + ... + score(n)`, the sum of scores over all starting rooms. + +**Note**: You cannot skip rooms. You can finish your journey even if your health points become non-positive. + +**Example 1:** + +**Input:** hp = 11, damage = [3,6,7], requirement = [4,2,5] + +**Output:** 3 + +**Explanation:** + +`score(1) = 2`, `score(2) = 1`, `score(3) = 0`. The total score is `2 + 1 + 0 = 3`. + +As an example, `score(1) = 2` because you get 2 points if you start from room 1. + +* You start with 11 health points. +* Enter room 1. Your health points are now `11 - 3 = 8`. You get 1 point because `8 >= 4`. +* Enter room 2. Your health points are now `8 - 6 = 2`. You get 1 point because `2 >= 2`. +* Enter room 3. Your health points are now `2 - 7 = -5`. You do not get any points because `-5 < 5`. + +**Example 2:** + +**Input:** hp = 2, damage = [10000,1], requirement = [1,1] + +**Output:** 1 + +**Explanation:** + +`score(1) = 0`, `score(2) = 1`. The total score is `0 + 1 = 1`. + +`score(1) = 0` because you do not get any points if you start from room 1. + +* You start with 2 health points. +* Enter room 1. Your health points are now `2 - 10000 = -9998`. You do not get any points because `-9998 < 1`. +* Enter room 2. Your health points are now `-9998 - 1 = -9999`. You do not get any points because `-9999 < 1`. + +`score(2) = 1` because you get 1 point if you start from room 2. + +* You start with 2 health points. +* Enter room 2. Your health points are now `2 - 1 = 1`. You get 1 point because `1 >= 1`. + +**Constraints:** + +* 1 <= hp <= 109 +* 1 <= n == damage.length == requirement.length <= 105 +* 1 <= damage[i], requirement[i] <= 104 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3771_total_score_of_dungeon_runs/SolutionTest.java b/src/test/java/g3701_3800/s3771_total_score_of_dungeon_runs/SolutionTest.java new file mode 100644 index 000000000..d95b9c12d --- /dev/null +++ b/src/test/java/g3701_3800/s3771_total_score_of_dungeon_runs/SolutionTest.java @@ -0,0 +1,21 @@ +package g3701_3800.s3771_total_score_of_dungeon_runs; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void totalScore() { + assertThat( + new Solution().totalScore(11, new int[] {3, 6, 7}, new int[] {4, 2, 5}), + equalTo(3L)); + } + + @Test + void totalScore2() { + assertThat( + new Solution().totalScore(2, new int[] {10000, 1}, new int[] {1, 1}), equalTo(1L)); + } +} From 939b480da32b9d9d3ae5d577499b9f8410ab3f86 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Fri, 8 May 2026 08:28:33 +0300 Subject: [PATCH 31/34] Added task 3772 --- .../Solution.java | 73 +++++++++++++++++++ .../readme.md | 67 +++++++++++++++++ .../SolutionTest.java | 34 +++++++++ 3 files changed, 174 insertions(+) create mode 100644 src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/Solution.java create mode 100644 src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/readme.md create mode 100644 src/test/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/Solution.java b/src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/Solution.java new file mode 100644 index 000000000..d1ec1d050 --- /dev/null +++ b/src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/Solution.java @@ -0,0 +1,73 @@ +package g3701_3800.s3772_maximum_subgraph_score_in_a_tree; + +// #Hard #Array #Dynamic_Programming #Tree #Senior_Staff #Weekly_Contest_479 #Depth_First_Search +// #2026_05_08_Time_35_ms_(100.00%)_Space_279.46_MB_(74.36%) + +import java.util.Arrays; + +public class Solution { + public int[] maxSubgraphScore(int n, int[][] edges, int[] good) { + int[] h = new int[n]; + int[] e = new int[2 * (n - 1)]; + int[] ne = new int[2 * (n - 1)]; + int idx = 0; + Arrays.fill(h, -1); + for (int[] ed : edges) { + int a = ed[0]; + int b = ed[1]; + e[idx] = b; + ne[idx] = h[a]; + h[a] = idx; + idx++; + e[idx] = a; + ne[idx] = h[b]; + h[b] = idx; + idx++; + } + int[] v = new int[n]; + for (int i = 0; i < n; i++) { + v[i] = good[i] == 1 ? 1 : -1; + } + int[] dp = new int[n]; + int[] p = new int[n]; + int[] ord = new int[n]; + int top = 0; + Arrays.fill(p, -1); + int[] st = new int[n]; + int sp = 0; + boolean[] vis = new boolean[n]; + st[sp++] = 0; + vis[0] = true; + while (sp > 0) { + int u = st[--sp]; + ord[top++] = u; + for (int i = h[u]; i != -1; i = ne[i]) { + int w = e[i]; + if (!vis[w]) { + vis[w] = true; + p[w] = u; + st[sp++] = w; + } + } + } + for (int i = n - 1; i >= 0; i--) { + int u = ord[i]; + dp[u] = v[u]; + for (int j = h[u]; j != -1; j = ne[j]) { + int w = e[j]; + if (p[w] == u && dp[w] > 0) { + dp[u] += dp[w]; + } + } + } + int[] ans = new int[n]; + ans[0] = dp[0]; + for (int i = 1; i < n; i++) { + int u = ord[i]; + int par = p[u]; + int pc = ans[par] - Math.max(0, dp[u]); + ans[u] = dp[u] + Math.max(0, pc); + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/readme.md b/src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/readme.md new file mode 100644 index 000000000..fd52c89c2 --- /dev/null +++ b/src/main/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/readme.md @@ -0,0 +1,67 @@ +3772\. Maximum Subgraph Score in a Tree + +Hard + +You are given an **undirected tree** with `n` nodes, numbered from 0 to `n - 1`. It is represented by a 2D integer array `edges` of length `n - 1`, where edges[i] = [ai, bi] indicates that there is an edge between nodes ai and bi in the tree. + +You are also given an integer array `good` of length `n`, where `good[i]` is 1 if the ith node is good, and 0 if it is bad. + +Define the **score** of a **subgraph** as the number of good nodes minus the number of bad nodes in that subgraph. + +For each node `i`, find the **maximum** possible score among all **connected subgraphs** that contain node `i`. + +Return an array of `n` integers where the ith element is the **maximum** score for node `i`. + +A **subgraph** is a graph whose vertices and edges are subsets of the original graph. + +A **connected subgraph** is a subgraph in which every pair of its vertices is reachable from one another using only its edges. + +**Example 1:** + +![Tree Example 1](https://assets.leetcode.com/uploads/2025/11/17/tree1fixed.png) + +**Input:** n = 3, edges = [[0,1],[1,2]], good = [1,0,1] + +**Output:** [1,1,1] + +**Explanation:** + +* Green nodes are good and red nodes are bad. +* For each node, the best connected subgraph containing it is the whole tree, which has 2 good nodes and 1 bad node, resulting in a score of 1. +* Other connected subgraphs containing a node may have the same score. + +**Example 2:** + +![Tree Example 2](https://assets.leetcode.com/uploads/2025/11/17/tree2.png) + +**Input:** n = 5, edges = [[1,0],[1,2],[1,3],[3,4]], good = [0,1,0,1,1] + +**Output:** [2,3,2,3,3] + +**Explanation:** + +* Node 0: The best connected subgraph consists of nodes `0, 1, 3, 4`, which has 3 good nodes and 1 bad node, resulting in a score of `3 - 1 = 2`. +* Nodes 1, 3, and 4: The best connected subgraph consists of nodes `1, 3, 4`, which has 3 good nodes, resulting in a score of 3. +* Node 2: The best connected subgraph consists of nodes `1, 2, 3, 4`, which has 3 good nodes and 1 bad node, resulting in a score of `3 - 1 = 2`. + +**Example 3:** + +![Tree Example 3](https://assets.leetcode.com/uploads/2025/11/17/tree3.png) + +**Input:** n = 2, edges = [[0,1]], good = [0,0] + +**Output:** [-1,-1] + +**Explanation:** + +For each node, including the other node only adds another bad node, so the best score for both nodes is -1. + +**Constraints:** + +* 2 <= n <= 105 +* `edges.length == n - 1` +* edges[i] = [ai, bi] +* 0 <= ai, bi < n +* `good.length == n` +* `0 <= good[i] <= 1` +* The input is generated such that `edges` represents a valid tree. \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/SolutionTest.java b/src/test/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/SolutionTest.java new file mode 100644 index 000000000..048e211ba --- /dev/null +++ b/src/test/java/g3701_3800/s3772_maximum_subgraph_score_in_a_tree/SolutionTest.java @@ -0,0 +1,34 @@ +package g3701_3800.s3772_maximum_subgraph_score_in_a_tree; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maxSubgraphScore() { + assertThat( + new Solution() + .maxSubgraphScore(3, new int[][] {{0, 1}, {1, 2}}, new int[] {1, 0, 1}), + equalTo(new int[] {1, 1, 1})); + } + + @Test + void maxSubgraphScore2() { + assertThat( + new Solution() + .maxSubgraphScore( + 5, + new int[][] {{1, 0}, {1, 2}, {1, 3}, {3, 4}}, + new int[] {0, 1, 0, 1, 1}), + equalTo(new int[] {2, 3, 2, 3, 3})); + } + + @Test + void maxSubgraphScore3() { + assertThat( + new Solution().maxSubgraphScore(2, new int[][] {{0, 1}}, new int[] {0, 0}), + equalTo(new int[] {-1, -1})); + } +} From 1cf71a255de54a26e0dfa1270c16903cb75a4a69 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Fri, 8 May 2026 09:04:01 +0300 Subject: [PATCH 32/34] Added tasks 3774, 3775, 3776 --- .../Solution.java | 19 ++++++ .../readme.md | 42 +++++++++++++ .../Solution.java | 40 ++++++++++++ .../readme.md | 56 +++++++++++++++++ .../Solution.java | 31 +++++++++ .../readme.md | 63 +++++++++++++++++++ .../SolutionTest.java | 18 ++++++ .../SolutionTest.java | 23 +++++++ .../SolutionTest.java | 23 +++++++ 9 files changed, 315 insertions(+) create mode 100644 src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/Solution.java create mode 100644 src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/readme.md create mode 100644 src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/Solution.java create mode 100644 src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/readme.md create mode 100644 src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/Solution.java create mode 100644 src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/readme.md create mode 100644 src/test/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/Solution.java b/src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/Solution.java new file mode 100644 index 000000000..535995397 --- /dev/null +++ b/src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/Solution.java @@ -0,0 +1,19 @@ +package g3701_3800.s3774_absolute_difference_between_maximum_and_minimum_k_elements; + +// #Easy #Array #Sorting #Mid_Level #Weekly_Contest_480 +// #2026_05_08_Time_5_ms_(96.82%)_Space_46.97_MB_(28.79%) + +import java.util.Arrays; + +public class Solution { + public int absDifference(int[] nums, int k) { + Arrays.sort(nums); + int maxSum = 0; + int minSum = 0; + for (int i = 0, j = nums.length - 1; i < k; i++, j--) { + minSum += nums[i]; + maxSum += nums[j]; + } + return maxSum - minSum; + } +} diff --git a/src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/readme.md b/src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/readme.md new file mode 100644 index 000000000..7cde9ee43 --- /dev/null +++ b/src/main/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/readme.md @@ -0,0 +1,42 @@ +3774\. Absolute Difference Between Maximum and Minimum K Elements + +Easy + +You are given an integer array `nums` and an integer `k`. + +Find the absolute difference between: + +* the **sum** of the `k` **largest** elements in the array; and +* the **sum** of the `k` **smallest** elements in the array. + +Return an integer denoting this difference. + +**Example 1:** + +**Input:** nums = [5,2,2,4], k = 2 + +**Output:** 5 + +**Explanation:** + +* The `k = 2` largest elements are 4 and 5. Their sum is `4 + 5 = 9`. +* The `k = 2` smallest elements are 2 and 2. Their sum is `2 + 2 = 4`. +* The absolute difference is `abs(9 - 4) = 5`. + +**Example 2:** + +**Input:** nums = [100], k = 1 + +**Output:** 0 + +**Explanation:** + +* The largest element is 100. +* The smallest element is 100. +* The absolute difference is `abs(100 - 100) = 0`. + +**Constraints:** + +* `1 <= n == nums.length <= 100` +* `1 <= nums[i] <= 100` +* `1 <= k <= n` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/Solution.java b/src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/Solution.java new file mode 100644 index 000000000..d465f88cf --- /dev/null +++ b/src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/Solution.java @@ -0,0 +1,40 @@ +package g3701_3800.s3775_reverse_words_with_same_vowel_count; + +// #Medium #String #Two_Pointers #Simulation #Senior #Weekly_Contest_480 +// #2026_05_08_Time_41_ms_(96.14%)_Space_48.30_MB_(90.84%) + +public class Solution { + public String reverseWords(String s) { + char[] wrd = s.toCharArray(); + String vowels = "aeiou"; + int left = 0; + int right = 0; + int firstWrd = 0; + int anotherWrd = 0; + while (left < wrd.length) { + right = left; + anotherWrd = 0; + while (right < wrd.length && wrd[right] != ' ') { + if (vowels.indexOf(wrd[right]) != -1) { + if (left == 0) { + firstWrd++; + } else { + anotherWrd++; + } + } + right++; + } + if (left != 0 && anotherWrd == firstWrd) { + int l = left; + int r = right - 1; + while (l < r) { + char temp = wrd[r]; + wrd[r--] = wrd[l]; + wrd[l++] = temp; + } + } + left = right + 1; + } + return new String(wrd); + } +} diff --git a/src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/readme.md b/src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/readme.md new file mode 100644 index 000000000..a62206e37 --- /dev/null +++ b/src/main/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/readme.md @@ -0,0 +1,56 @@ +3775\. Reverse Words With Same Vowel Count + +Medium + +You are given a string `s` consisting of lowercase English words, each separated by a single space. + +Determine how many vowels appear in the **first** word. Then, reverse each following word that has the **same vowel count**. Leave all remaining words unchanged. + +Return the resulting string. + +Vowels are `'a'`, `'e'`, `'i'`, `'o'`, and `'u'`. + +**Example 1:** + +**Input:** s = "cat and mice" + +**Output:** "cat dna mice" + +**Explanation:** + +* The first word `"cat"` has 1 vowel. +* `"and"` has 1 vowel, so it is reversed to form `"dna"`. +* `"mice"` has 2 vowels, so it remains unchanged. +* Thus, the resulting string is `"cat dna mice"`. + +**Example 2:** + +**Input:** s = "book is nice" + +**Output:** "book is ecin" + +**Explanation:** + +* The first word `"book"` has 2 vowels. +* `"is"` has 1 vowel, so it remains unchanged. +* `"nice"` has 2 vowels, so it is reversed to form `"ecin"`. +* Thus, the resulting string is `"book is ecin"`. + +**Example 3:** + +**Input:** s = "banana healthy" + +**Output:** "banana healthy" + +**Explanation:** + +* The first word `"banana"` has 3 vowels. +* `"healthy"` has 2 vowels, so it remains unchanged. +* Thus, the resulting string is `"banana healthy"`. + +**Constraints:** + +* 1 <= s.length <= 105 +* `s` consists of lowercase English letters and spaces. +* Words in `s` are separated by a **single** space. +* `s` does **not** contain leading or trailing spaces. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/Solution.java b/src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/Solution.java new file mode 100644 index 000000000..f0254745c --- /dev/null +++ b/src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/Solution.java @@ -0,0 +1,31 @@ +package g3701_3800.s3776_minimum_moves_to_balance_circular_array; + +// #Medium #Array #Sorting #Greedy #Staff #Weekly_Contest_480 +// #2026_05_08_Time_2_ms_(100.00%)_Space_139.96_MB_(20.95%) + +public class Solution { + public long minMoves(int[] balance) { + int n = balance.length; + int j = -1; + long total = 0; + long res = 0; + for (int i = 0; i < n; i++) { + if (balance[i] < 0) { + j = i; + } + total += balance[i]; + } + if (j == -1) { + return 0; + } + if (total < 0) { + return -1; + } + for (int d = 1; balance[j] < 0; ++d) { + long storage = balance[(j + d) % n] + (long) balance[(j - d % n + n) % n]; + res += Math.min(-balance[j], (int) storage) * d; + balance[j] += (int) storage; + } + return res; + } +} diff --git a/src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/readme.md b/src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/readme.md new file mode 100644 index 000000000..585d2e057 --- /dev/null +++ b/src/main/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/readme.md @@ -0,0 +1,63 @@ +3776\. Minimum Moves to Balance Circular Array + +Medium + +You are given a **circular** array `balance` of length `n`, where `balance[i]` is the net balance of person `i`. + +In one move, a person can transfer **exactly** 1 unit of balance to either their left or right neighbor. + +Return the **minimum** number of moves required so that every person has a **non-negative** balance. If it is impossible, return `-1`. + +**Note**: You are guaranteed that **at most** 1 index has a **negative** balance initially. + +**Example 1:** + +**Input:** balance = [5,1,-4] + +**Output:** 4 + +**Explanation:** + +One optimal sequence of moves is: + +* Move 1 unit from `i = 1` to `i = 2`, resulting in `balance = [5, 0, -3]` +* Move 1 unit from `i = 0` to `i = 2`, resulting in `balance = [4, 0, -2]` +* Move 1 unit from `i = 0` to `i = 2`, resulting in `balance = [3, 0, -1]` +* Move 1 unit from `i = 0` to `i = 2`, resulting in `balance = [2, 0, 0]` + +Thus, the minimum number of moves required is 4. + +**Example 2:** + +**Input:** balance = [1,2,-5,2] + +**Output:** 6 + +**Explanation:** + +One optimal sequence of moves is: + +* Move 1 unit from `i = 1` to `i = 2`, resulting in `balance = [1, 1, -4, 2]` +* Move 1 unit from `i = 1` to `i = 2`, resulting in `balance = [1, 0, -3, 2]` +* Move 1 unit from `i = 3` to `i = 2`, resulting in `balance = [1, 0, -2, 1]` +* Move 1 unit from `i = 3` to `i = 2`, resulting in `balance = [1, 0, -1, 0]` +* Move 1 unit from `i = 0` to `i = 1`, resulting in `balance = [0, 1, -1, 0]` +* Move 1 unit from `i = 1` to `i = 2`, resulting in `balance = [0, 0, 0, 0]` + +Thus, the minimum number of moves required is 6. + +**Example 3:** + +**Input:** balance = [-3,2] + +**Output:** \-1 + +**Explanation:** + +It is impossible to make all balances non-negative for `balance = [-3, 2]`, so the answer is -1. + +**Constraints:** + +* 1 <= n == balance.length <= 105 +* -109 <= balance[i] <= 109 +* There is at most one negative value in `balance` initially. \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/SolutionTest.java b/src/test/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/SolutionTest.java new file mode 100644 index 000000000..379b26e57 --- /dev/null +++ b/src/test/java/g3701_3800/s3774_absolute_difference_between_maximum_and_minimum_k_elements/SolutionTest.java @@ -0,0 +1,18 @@ +package g3701_3800.s3774_absolute_difference_between_maximum_and_minimum_k_elements; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void absDifference() { + assertThat(new Solution().absDifference(new int[] {5, 2, 2, 4}, 2), equalTo(5)); + } + + @Test + void absDifference2() { + assertThat(new Solution().absDifference(new int[] {100}, 1), equalTo(0)); + } +} diff --git a/src/test/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/SolutionTest.java b/src/test/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/SolutionTest.java new file mode 100644 index 000000000..4fa4491a0 --- /dev/null +++ b/src/test/java/g3701_3800/s3775_reverse_words_with_same_vowel_count/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3775_reverse_words_with_same_vowel_count; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void reverseWords() { + assertThat(new Solution().reverseWords("cat and mice"), equalTo("cat dna mice")); + } + + @Test + void reverseWords2() { + assertThat(new Solution().reverseWords("book is nice"), equalTo("book is ecin")); + } + + @Test + void reverseWords3() { + assertThat(new Solution().reverseWords("banana healthy"), equalTo("banana healthy")); + } +} diff --git a/src/test/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/SolutionTest.java b/src/test/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/SolutionTest.java new file mode 100644 index 000000000..520f095eb --- /dev/null +++ b/src/test/java/g3701_3800/s3776_minimum_moves_to_balance_circular_array/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3776_minimum_moves_to_balance_circular_array; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minMoves() { + assertThat(new Solution().minMoves(new int[] {5, 1, -4}), equalTo(4L)); + } + + @Test + void minMoves2() { + assertThat(new Solution().minMoves(new int[] {1, 2, -5, 2}), equalTo(6L)); + } + + @Test + void minMoves3() { + assertThat(new Solution().minMoves(new int[] {-3, 2}), equalTo(-1L)); + } +} From 043da4b6f22a51e8f35a78d9e545eeeb40f701f0 Mon Sep 17 00:00:00 2001 From: ThanhNIT <93962044+ThanhNIT@users.noreply.github.com> Date: Sat, 9 May 2026 00:26:24 +0700 Subject: [PATCH 33/34] Added tasks 3760-3770 --- .../Solution.java | 22 ++ .../readme.md | 45 ++++ .../Solution.java | 26 ++ .../readme.md | 56 +++++ .../Solution.java | 222 ++++++++++++++++++ .../readme.md | 57 +++++ .../s3764_most_common_course_pairs/readme.md | 84 +++++++ .../s3764_most_common_course_pairs/script.sql | 27 +++ .../s3765_complete_prime_number/Solution.java | 36 +++ .../s3765_complete_prime_number/readme.md | 53 +++++ .../Solution.java | 52 ++++ .../readme.md | 55 +++++ .../Solution.java | 30 +++ .../readme.md | 58 +++++ .../Solution.java | 60 +++++ .../readme.md | 56 +++++ .../Solution.java | 38 +++ .../readme.md | 50 ++++ .../Solution.java | 29 +++ .../readme.md | 40 ++++ .../SolutionTest.java | 23 ++ .../SolutionTest.java | 23 ++ .../SolutionTest.java | 26 ++ .../MysqlTest.java | 94 ++++++++ .../SolutionTest.java | 23 ++ .../SolutionTest.java | 31 +++ .../SolutionTest.java | 62 +++++ .../SolutionTest.java | 23 ++ .../SolutionTest.java | 31 +++ .../SolutionTest.java | 23 ++ 30 files changed, 1455 insertions(+) create mode 100644 src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/Solution.java create mode 100644 src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/readme.md create mode 100644 src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/Solution.java create mode 100644 src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/readme.md create mode 100644 src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/Solution.java create mode 100644 src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/readme.md create mode 100644 src/main/java/g3701_3800/s3764_most_common_course_pairs/readme.md create mode 100644 src/main/java/g3701_3800/s3764_most_common_course_pairs/script.sql create mode 100644 src/main/java/g3701_3800/s3765_complete_prime_number/Solution.java create mode 100644 src/main/java/g3701_3800/s3765_complete_prime_number/readme.md create mode 100644 src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/Solution.java create mode 100644 src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/readme.md create mode 100644 src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/Solution.java create mode 100644 src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/readme.md create mode 100644 src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/Solution.java create mode 100644 src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/readme.md create mode 100644 src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/Solution.java create mode 100644 src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/readme.md create mode 100644 src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/Solution.java create mode 100644 src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/readme.md create mode 100644 src/test/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3764_most_common_course_pairs/MysqlTest.java create mode 100644 src/test/java/g3701_3800/s3765_complete_prime_number/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3769_sort_integers_by_binary_reflection/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/Solution.java b/src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/Solution.java new file mode 100644 index 000000000..2cf37828c --- /dev/null +++ b/src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/Solution.java @@ -0,0 +1,22 @@ +package g3701_3800.s3760_maximum_substrings_with_distinct_start; + +// #Medium #String #Hash_Table #Senior #Weekly_Contest_478 +// #2026_05_08_Time_5_ms_(98.92%)_Space_47.79_MB_(74.99%) + +public class Solution { + public int maxDistinct(String s) { + int mask = 0; + int res = 0; + for (char c : s.toCharArray()) { + int bit = 1 << (c - 'a'); + if ((mask & bit) == 0) { + mask |= bit; + res++; + if (res == 26) { + break; + } + } + } + return res; + } +} diff --git a/src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/readme.md b/src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/readme.md new file mode 100644 index 000000000..d9243db58 --- /dev/null +++ b/src/main/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/readme.md @@ -0,0 +1,45 @@ +3760\. Maximum Substrings With Distinct Start + +Medium + +You are given a string `s` consisting of lowercase English letters. + +Return an integer denoting the **maximum** number of substring you can split `s` into such that each **substring** starts with a **distinct** character (i.e., no two substrings start with the same character). + +**Example 1:** + +**Input:** s = "abab" + +**Output:** 2 + +**Explanation:** + +* Split `"abab"` into `"a"` and `"bab"`. +* Each substring starts with a distinct character i.e `'a'` and `'b'`. Thus, the answer is 2. + +**Example 2:** + +**Input:** s = "abcd" + +**Output:** 4 + +**Explanation:** + +* Split `"abcd"` into `"a"`, `"b"`, `"c"`, and `"d"`. +* Each substring starts with a distinct character. Thus, the answer is 4. + +**Example 3:** + +**Input:** s = "aaaa" + +**Output:** 1 + +**Explanation:** + +* All characters in `"aaaa"` are `'a'`. +* Only one substring can start with `'a'`. Thus, the answer is 1. + +**Constraints:** + +* 1 <= s.length <= 105 +* `s` consists of lowercase English letters. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/Solution.java b/src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/Solution.java new file mode 100644 index 000000000..96693e412 --- /dev/null +++ b/src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/Solution.java @@ -0,0 +1,26 @@ +package g3701_3800.s3761_minimum_absolute_distance_between_mirror_pairs; + +// #Medium #Array #Hash_Table #Math #Staff #Weekly_Contest_478 +// #2026_05_08_Time_49_ms_(84.83%)_Space_95.13_MB_(49.31%) + +import java.util.HashMap; + +public class Solution { + public int minMirrorPairDistance(int[] nums) { + int res = 100000; + int i = 0; + HashMap seen = new HashMap<>(); + for (int n : nums) { + int r; + if (seen.containsKey(n)) { + res = Math.min(res, i - seen.get(n)); + } + for (r = 0; n > 0; n /= 10) { + r = r * 10 + (n % 10); + } + seen.put(r, i++); + } + + return res == 100000 ? -1 : res; + } +} diff --git a/src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/readme.md b/src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/readme.md new file mode 100644 index 000000000..7333c65d2 --- /dev/null +++ b/src/main/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/readme.md @@ -0,0 +1,56 @@ +3761\. Minimum Absolute Distance Between Mirror Pairs + +Medium + +You are given an integer array `nums`. + +A **mirror pair** is a pair of indices `(i, j)` such that: + +* `0 <= i < j < nums.length`, and +* `reverse(nums[i]) == nums[j]`, where `reverse(x)` denotes the integer formed by reversing the digits of `x`. Leading zeros are omitted after reversing, for example `reverse(120) = 21`. + +Return the **minimum** absolute distance between the indices of any mirror pair. The absolute distance between indices `i` and `j` is `abs(i - j)`. + +If no mirror pair exists, return `-1`. + +**Example 1:** + +**Input:** nums = [12,21,45,33,54] + +**Output:** 1 + +**Explanation:** + +The mirror pairs are: + +* (0, 1) since `reverse(nums[0]) = reverse(12) = 21 = nums[1]`, giving an absolute distance `abs(0 - 1) = 1`. +* (2, 4) since `reverse(nums[2]) = reverse(45) = 54 = nums[4]`, giving an absolute distance `abs(2 - 4) = 2`. + +The minimum absolute distance among all pairs is 1. + +**Example 2:** + +**Input:** nums = [120,21] + +**Output:** 1 + +**Explanation:** + +There is only one mirror pair (0, 1) since `reverse(nums[0]) = reverse(120) = 21 = nums[1]`. + +The minimum absolute distance is 1. + +**Example 3:** + +**Input:** nums = [21,120] + +**Output:** \-1 + +**Explanation:** + +There are no mirror pairs in the array. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/Solution.java b/src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/Solution.java new file mode 100644 index 000000000..f95f68fc3 --- /dev/null +++ b/src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/Solution.java @@ -0,0 +1,222 @@ +package g3701_3800.s3762_minimum_operations_to_equalize_subarrays; + +// #Hard #Array #Math #Binary_Search #Segment_Tree #Weekly_Contest_478 #Principal +// #2026_05_08_Time_528_ms_(100.00%)_Space_267.97_MB_(76.92%) + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; + +public class Solution { + private static class MNode { + int l; + int r; + int[] vals; + long[] pref; + MNode left; + MNode right; + + MNode(int l, int r) { + this.l = l; + this.r = r; + } + } + + private static class Group { + int[] pos; + int[] val; + long[] prefPos; + MNode root; + int minv; + int maxv; + } + + private static int lowerBound(int[] a, int x) { + int l = 0; + int r = a.length; + while (l < r) { + int m = (l + r) >>> 1; + if (a[m] >= x) { + r = m; + } else { + l = m + 1; + } + } + return l; + } + + private int upperBound(int[] a, int x) { + int l = 0; + int r = a.length; + while (l < r) { + int m = (l + r) >>> 1; + if (a[m] > x) { + r = m; + } else { + l = m + 1; + } + } + return l; + } + + private MNode buildMerge(int[] arr, int l, int r) { + MNode node = new MNode(l, r); + if (l == r) { + node.vals = new int[] {arr[l]}; + node.pref = new long[] {arr[l]}; + return node; + } + int m = (l + r) >>> 1; + node.left = buildMerge(arr, l, m); + node.right = buildMerge(arr, m + 1, r); + int[] a = node.left.vals; + int[] b = node.right.vals; + int na = a.length; + int nb = b.length; + int[] c = new int[na + nb]; + long[] pref = new long[na + nb]; + int ia = 0; + int ib = 0; + int k = 0; + while (ia < na && ib < nb) { + if (a[ia] <= b[ib]) { + c[k++] = a[ia++]; + } else { + c[k++] = b[ib++]; + } + } + while (ia < na) { + c[k++] = a[ia++]; + } + while (ib < nb) { + c[k++] = b[ib++]; + } + pref[0] = c[0]; + for (int i = 1; i < c.length; i++) { + pref[i] = pref[i - 1] + c[i]; + } + node.vals = c; + node.pref = pref; + return node; + } + + private int countLE(MNode node, int ql, int qr, int x) { + if (node == null || ql > node.r || qr < node.l) { + return 0; + } + if (ql <= node.l && node.r <= qr) { + int idx = upperBound(node.vals, x) - 1; + return idx < 0 ? 0 : idx + 1; + } + return countLE(node.left, ql, qr, x) + countLE(node.right, ql, qr, x); + } + + private long sumLE(MNode node, int ql, int qr, int x) { + if (node == null || ql > node.r || qr < node.l) { + return 0L; + } + if (ql <= node.l && node.r <= qr) { + int idx = upperBound(node.vals, x) - 1; + return idx < 0 ? 0L : node.pref[idx]; + } + return sumLE(node.left, ql, qr, x) + sumLE(node.right, ql, qr, x); + } + + public long[] minOperations(int[] nums, int k, int[][] queries) { + Map groupHashMap = buildGroups(nums, k); + long[] ans = new long[queries.length]; + for (int qi = 0; qi < queries.length; qi++) { + ans[qi] = processQuery(nums, queries[qi], groupHashMap, k); + } + return ans; + } + + private Map buildGroups(int[] nums, int k) { + Map> map = new HashMap<>(); + for (int i = 0; i < nums.length; i++) { + int rem = nums[i] % k; + int value = nums[i] / k; + map.computeIfAbsent(rem, z -> new ArrayList<>()).add(new int[] {i, value}); + } + Map groupHashMap = new HashMap<>(); + for (Map.Entry> entry : map.entrySet()) { + groupHashMap.put(entry.getKey(), createGroup(entry.getValue())); + } + return groupHashMap; + } + + private Group createGroup(ArrayList arr) { + arr.sort(Comparator.comparingInt(a -> a[0])); + int size = arr.size(); + int[] pos = new int[size]; + int[] val = new int[size]; + long[] prefPos = new long[size]; + int min = Integer.MAX_VALUE; + int max = Integer.MIN_VALUE; + for (int i = 0; i < size; i++) { + pos[i] = arr.get(i)[0]; + val[i] = arr.get(i)[1]; + min = Math.min(min, val[i]); + max = Math.max(max, val[i]); + prefPos[i] = i == 0 ? val[i] : prefPos[i - 1] + val[i]; + } + Group group = new Group(); + group.pos = pos; + group.val = val; + group.prefPos = prefPos; + group.minv = min; + group.maxv = max; + if (size > 0) { + group.root = buildMerge(val, 0, size - 1); + } + return group; + } + + private long processQuery(int[] nums, int[] query, Map groupHashMap, int k) { + int left = query[0]; + int right = query[1]; + int rem = nums[left] % k; + Group group = groupHashMap.get(rem); + if (group == null) { + return -1; + } + int l = lowerBound(group.pos, left); + int r = upperBound(group.pos, right) - 1; + if (!isValidRange(left, right, l, r)) { + return -1; + } + return calculateOperations(group, l, r); + } + + private boolean isValidRange(int left, int right, int l, int r) { + return l <= r && (r - l + 1 == right - left + 1); + } + + private long calculateOperations(Group group, int l, int r) { + int count = r - l + 1; + int median = findMedian(group, l, r, count); + long leftCount = countLE(group.root, l, r, median); + long leftSum = sumLE(group.root, l, r, median); + long total = group.prefPos[r] - (l == 0 ? 0L : group.prefPos[l - 1]); + long rightSum = total - leftSum; + long rightCount = count - leftCount; + return median * leftCount - leftSum + rightSum - median * rightCount; + } + + private int findMedian(Group group, int l, int r, int count) { + int need = (count + 1) / 2; + int low = group.minv; + int high = group.maxv; + while (low < high) { + int mid = low + ((high - low) >>> 1); + int currentCount = countLE(group.root, l, r, mid); + if (currentCount >= need) { + high = mid; + } else { + low = mid + 1; + } + } + return low; + } +} diff --git a/src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/readme.md b/src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/readme.md new file mode 100644 index 000000000..f0f048abe --- /dev/null +++ b/src/main/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/readme.md @@ -0,0 +1,57 @@ +3762\. Minimum Operations to Equalize Subarrays + +Hard + +You are given an integer array `nums` and an integer `k`. + +In one operation, you can **increase or decrease** any element of `nums` by **exactly** `k`. + +You are also given a 2D integer array `queries`, where each queries[i] = [li, ri]. + +For each query, find the **minimum** number of operations required to make **all** elements in the **non-empty subarrays** nums[li..ri] **equal**. If it is impossible, the answer for that query is `-1`. + +Return an array `ans`, where `ans[i]` is the answer for the ith query. + +**Example 1:** + +**Input:** nums = [1,4,7], k = 3, queries = [[0,1],[0,2]] + +**Output:** [1,2] + +**Explanation:** + +One optimal set of operations: + +| `i` | `[l_i, r_i]` | `nums[l_i..r_i]` | Possibility | Operations | Final `nums[l_i..r_i]` | `ans[i]` | +|---|---|---|---|---|---|---| +| 0 | [0, 1] | [1, 4] | Yes | `nums[0] + k = 1 + 3 = 4 = nums[1]` | [4, 4] | 1 | +| 1 | [0, 2] | [1, 4, 7] | Yes | `nums[0] + k = 1 + 3 = 4 = nums[1]`
`nums[2] - k = 7 - 3 = 4 = nums[1]` | [4, 4, 4] | 2 | + +Thus, `ans = [1, 2]`. + +**Example 2:** + +**Input:** nums = [1,2,4], k = 2, queries = [[0,2],[0,0],[1,2]] + +**Output:** [-1,0,1] + +**Explanation:** + +One optimal set of operations: + +| `i` | `[l_i, r_i]` | `nums[l_i..r_i]` | Possibility | Operations | Final `nums[l_i..r_i]` | `ans[i]` | +|---|---|---|---|---|---|---| +| 0 | [0, 2] | [1, 2, 4] | No | - | [1, 2, 4] | -1 | +| 1 | [0, 0] | [1] | Yes | Already equal | [1] | 0 | +| 2 | [1, 2] | [2, 4] | Yes | `nums[1] + k = 2 + 2 = 4 = nums[2]` | [4, 4] | 1 | + +Thus, `ans = [-1, 0, 1]`. + +**Constraints:** + +* 1 <= n == nums.length <= 4 × 104 +* 1 <= nums[i] <= 109 +* 1 <= k <= 109 +* 1 <= queries.length <= 4 × 104 +* queries[i] = [li, ri] +* 0 <= li <= ri <= n - 1 diff --git a/src/main/java/g3701_3800/s3764_most_common_course_pairs/readme.md b/src/main/java/g3701_3800/s3764_most_common_course_pairs/readme.md new file mode 100644 index 000000000..492a1b7d6 --- /dev/null +++ b/src/main/java/g3701_3800/s3764_most_common_course_pairs/readme.md @@ -0,0 +1,84 @@ +3764\. Most Common Course Pairs + +Hard + +Table: `course_completions` + + +-------------------+---------+ + | Column Name | Type | + +-------------------+---------+ + | user_id | int | + | course_id | int | + | course_name | varchar | + | completion_date | date | + | course_rating | int | + +-------------------+---------+ + (user_id, course_id) is the combination of columns with unique values for this table. + Each row represents a completed course by a user with their rating (1-5 scale). + +Write a solution to identify **skill mastery pathways** by analyzing course completion sequences among top-performing students: + +* Consider only **top-performing students** (those who completed **at least** `5` **courses** with an **average rating of** `4` **or higher**). +* For each top performer, identify the **sequence of courses** they completed in chronological order. +* Find all **consecutive course pairs** (`Course A → Course B`) taken by these students. +* Return the **pair frequency**, identifying which course transitions are most common among high achievers. + +Return _the result table ordered by_ _pair frequency in **descending** order_ _and then by first course name and second course name in **ascending** order_. + +The result format is in the following example. + +**Example:** + +**Input:** + +course_completions table: + + +---------+-----------+---------------------+-----------------+---------------+ + | user_id | course_id | course_name | completion_date | course_rating | + +---------+-----------+---------------------+-----------------+---------------+ + | 1 | 101 | Python Basics | 2024-01-05 | 5 | + | 1 | 102 | SQL Fundamentals | 2024-02-10 | 4 | + | 1 | 103 | JavaScript | 2024-03-15 | 5 | + | 1 | 104 | React Basics | 2024-04-20 | 4 | + | 1 | 105 | Node.js | 2024-05-25 | 5 | + | 1 | 106 | Docker | 2024-06-30 | 4 | + | 2 | 101 | Python Basics | 2024-01-08 | 4 | + | 2 | 104 | React Basics | 2024-02-14 | 5 | + | 2 | 105 | Node.js | 2024-03-20 | 4 | + | 2 | 106 | Docker | 2024-04-25 | 5 | + | 2 | 107 | AWS Fundamentals | 2024-05-30 | 4 | + | 3 | 101 | Python Basics | 2024-01-10 | 3 | + | 3 | 102 | SQL Fundamentals | 2024-02-12 | 3 | + | 3 | 103 | JavaScript | 2024-03-18 | 3 | + | 3 | 104 | React Basics | 2024-04-22 | 2 | + | 3 | 105 | Node.js | 2024-05-28 | 3 | + | 4 | 101 | Python Basics | 2024-01-12 | 5 | + | 4 | 108 | Data Science | 2024-02-16 | 5 | + | 4 | 109 | Machine Learning | 2024-03-22 | 5 | + +---------+-----------+---------------------+-----------------+---------------+ + +**Output:** + + +------------------+-------------------+------------------+ + | first_course | second_course | transition_count | + +------------------+-------------------+------------------+ + | Node.js | Docker | 2 | + | React Basics | Node.js | 2 | + | Docker | AWS Fundamentals | 1 | + | JavaScript | React Basics | 1 | + | Python Basics | React Basics | 1 | + | Python Basics | SQL Fundamentals | 1 | + | SQL Fundamentals | JavaScript | 1 | + +------------------+-------------------+------------------+ +**Explanation:** + +* **User 1**: Completed 6 courses with average rating 4.5 (qualifies as top performer) +* **User 2**: Completed 5 courses with average rating 4.4 (qualifies as top performer) +* **User 3**: Completed 5 courses but average rating is 2.8 (does not qualify) +* **User 4**: Completed only 3 courses (does not qualify) +* **Course Pairs Among Top Performers**: + * User 1: Python Basics → SQL Fundamentals → JavaScript → React Basics → Node.js → Docker + * User 2: Python Basics → React Basics → Node.js → Docker → AWS Fundamentals + * Most common transitions: Node.js → Docker (2 times), React Basics → Node.js (2 times) + +Results are ordered by transition_count in descending order, then by first_course in ascending order, and then by second_course in ascending order. diff --git a/src/main/java/g3701_3800/s3764_most_common_course_pairs/script.sql b/src/main/java/g3701_3800/s3764_most_common_course_pairs/script.sql new file mode 100644 index 000000000..4ea151824 --- /dev/null +++ b/src/main/java/g3701_3800/s3764_most_common_course_pairs/script.sql @@ -0,0 +1,27 @@ +# Write your MySQL query statement below +# #Hard #2026_05_08_Time_262_ms_(63.61%)_Space_0.0_MB_(100.00%) +-- Find the most common course-to-next-course transitions +-- among engaged users (>=5 courses, avg rating >= 4) +SELECT + course_name AS first_course, + next_course AS second_course, + COUNT(*) AS transition_count +FROM ( + SELECT + *, + LEAD(course_name) OVER ( + PARTITION BY user_id + ORDER BY completion_date + ) AS next_course + FROM course_completions + WHERE user_id IN ( + SELECT user_id + FROM course_completions + GROUP BY user_id + HAVING COUNT(course_id) >= 5 + AND AVG(course_rating) >= 4 + ) +) AS t +WHERE next_course IS NOT NULL +GROUP BY course_name, next_course +ORDER BY transition_count DESC, first_course ASC, second_course ASC; diff --git a/src/main/java/g3701_3800/s3765_complete_prime_number/Solution.java b/src/main/java/g3701_3800/s3765_complete_prime_number/Solution.java new file mode 100644 index 000000000..e00537b2d --- /dev/null +++ b/src/main/java/g3701_3800/s3765_complete_prime_number/Solution.java @@ -0,0 +1,36 @@ +package g3701_3800.s3765_complete_prime_number; + +// #Medium #Math #Enumeration #Number_Theory #Senior #Biweekly_Contest_171 +// #2026_05_08_Time_2_ms_(91.62%)_Space_42.93_MB_(55.39%) + +public class Solution { + private boolean isPrime(int n) { + if (n != 2 && n % 2 == 0) { + return false; + } + for (int i = 3; i * i <= n; i += 2) { + if (n % i == 0) { + return false; + } + } + return true; + } + + public boolean completePrime(int num) { + int y = 0; + int z = 1; + int x = num; + while (x > 0) { + y = z * (x % 10) + y; + if (y == 1 || !isPrime(y)) { + return false; + } + if (x == 1 || !isPrime(x)) { + return false; + } + x /= 10; + z *= 10; + } + return true; + } +} diff --git a/src/main/java/g3701_3800/s3765_complete_prime_number/readme.md b/src/main/java/g3701_3800/s3765_complete_prime_number/readme.md new file mode 100644 index 000000000..36922bd1f --- /dev/null +++ b/src/main/java/g3701_3800/s3765_complete_prime_number/readme.md @@ -0,0 +1,53 @@ +3765\. Complete Prime Number + +Medium + +You are given an integer `num`. + +A number `num` is called a **Complete Prime Number** if every **prefix** and every **suffix** of `num` is **prime**. + +Return `true` if `num` is a Complete Prime Number, otherwise return `false`. + +**Note**: + +* A **prefix** of a number is formed by the **first** `k` digits of the number. +* A **suffix** of a number is formed by the **last** `k` digits of the number. +* Single-digit numbers are considered Complete Prime Numbers only if they are **prime**. + +**Example 1:** + +**Input:** num = 23 + +**Output:** true + +**Explanation:** + +* Prefixes of `num = 23` are 2 and 23, both are prime. +* Suffixes of `num = 23` are 3 and 23, both are prime. +* All prefixes and suffixes are prime, so 23 is a Complete Prime Number and the answer is `true`. + +**Example 2:** + +**Input:** num = 39 + +**Output:** false + +**Explanation:** + +* Prefixes of `num = 39` are 3 and 39. 3 is prime, but 39 is not prime. +* Suffixes of `num = 39` are 9 and 39. Both 9 and 39 are not prime. +* At least one prefix or suffix is not prime, so 39 is not a Complete Prime Number and the answer is `false`. + +**Example 3:** + +**Input:** num = 7 + +**Output:** true + +**Explanation:** + +* 7 is prime, so all its prefixes and suffixes are prime and the answer is `true`. + +**Constraints:** + +* 1 <= num <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/Solution.java b/src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/Solution.java new file mode 100644 index 000000000..cbc5a7a17 --- /dev/null +++ b/src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/Solution.java @@ -0,0 +1,52 @@ +package g3701_3800.s3766_minimum_operations_to_make_binary_palindrome; + +// #Medium #Array #Binary_Search #Two_Pointers #Bit_Manipulation #Staff #Biweekly_Contest_171 +// #2026_05_08_Time_54_ms_(82.69%)_Space_47.43_MB_(64.42%) + +public class Solution { + private int binlen(int n) { + int c = 0; + while (n > 0) { + c++; + n >>= 1; + } + return c; + } + + private boolean isPal(int n) { + int l = 0; + int r = binlen(n) - 1; + while (l < r) { + if (((n >> l) & 1) != ((n >> r) & 1)) { + return false; + } + l++; + r--; + } + return true; + } + + public int[] minOperations(int[] nums) { + boolean[] binary = new boolean[5050]; + int[] ans = new int[nums.length]; + for (int i = 0; i < 5050; i++) { + binary[i] = isPal(i); + } + for (int i = 0; i < nums.length; i++) { + int a = nums[i]; + int b = nums[i]; + int c1 = 0; + int c2 = 0; + while (!binary[a]) { + a--; + c1++; + } + while (!binary[b]) { + b++; + c2++; + } + ans[i] = Math.min(c1, c2); + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/readme.md b/src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/readme.md new file mode 100644 index 000000000..1eb6ac57a --- /dev/null +++ b/src/main/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/readme.md @@ -0,0 +1,55 @@ +3766\. Minimum Operations to Make Binary Palindrome + +Medium + +You are given an integer array `nums`. + +For each element `nums[i]`, you may perform the following operations **any** number of times (including zero): + +* Increase `nums[i]` by 1, or +* Decrease `nums[i]` by 1. + +A number is called a **binary palindrome** if its binary representation without leading zeros reads the same forward and backward. + +Your task is to return an integer array `ans`, where `ans[i]` represents the **minimum** number of operations required to convert `nums[i]` into a **binary palindrome**. + +**Example 1:** + +**Input:** nums = [1,2,4] + +**Output:** [0,1,1] + +**Explanation:** + +One optimal set of operations: + +| `nums[i]` | Binary(`nums[i]`) | Nearest Palindrome | Binary (Palindrome) | Operations Required | `ans[i]` | +|---|---|---|---|---|---| +| 1 | 1 | 1 | 1 | Already palindrome | 0 | +| 2 | 10 | 3 | 11 | Increase by 1 | 1 | +| 4 | 100 | 3 | 11 | Decrease by 1 | 1 | + +Thus, `ans = [0, 1, 1]`. + +**Example 2:** + +**Input:** nums = [6,7,12] + +**Output:** [1,0,3] + +**Explanation:** + +One optimal set of operations: + +| `nums[i]` | Binary(`nums[i]`) | Nearest Palindrome | Binary (Palindrome) | Operations Required | `ans[i]` | +|---|---|---|---|---|---| +| 6 | 110 | 5 | 101 | Decrease by 1 | 1 | +| 7 | 111 | 7 | 111 | Already palindrome | 0 | +| 12 | 1100 | 15 | 1111 | Increase by 3 | 3 | + +Thus, `ans = [1, 0, 3]`. + +**Constraints:** + +* `1 <= nums.length <= 5000` +* `1 <= nums[i] <= 5000` diff --git a/src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/Solution.java b/src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/Solution.java new file mode 100644 index 000000000..c8f52ac0a --- /dev/null +++ b/src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/Solution.java @@ -0,0 +1,30 @@ +package g3701_3800.s3767_maximize_points_after_choosing_k_tasks; + +// #Medium #Array #Sorting #Greedy #Heap_Priority_Queue #Staff #Biweekly_Contest_171 +// #2026_05_08_Time_21_ms_(100.00%)_Space_130.40_MB_(85.82%) + +import java.util.PriorityQueue; + +public class Solution { + public long maxPoints(int[] technique1, int[] technique2, int k) { + int n = technique1.length; + int use2 = n - k; + PriorityQueue min = new PriorityQueue<>(); + long ans = 0; + for (int i = 0; i < n; ++i) { + int diff = technique2[i] - technique1[i]; + if (diff > 0) { + if (min.size() < use2) { + min.offer(diff); + ans += diff; + } else if (!min.isEmpty() && min.peek() < diff) { + ans -= min.poll(); + min.offer(diff); + ans += diff; + } + } + ans += technique1[i]; + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/readme.md b/src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/readme.md new file mode 100644 index 000000000..d61da8f1e --- /dev/null +++ b/src/main/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/readme.md @@ -0,0 +1,58 @@ +3767\. Maximize Points After Choosing K Tasks + +Medium + +You are given two integer arrays, `technique1` and `technique2`, each of length `n`, where `n` represents the number of tasks to complete. + +* If the ith task is completed using technique 1, you earn `technique1[i]` points. +* If it is completed using technique 2, you earn `technique2[i]` points. + +You are also given an integer `k`, representing the **minimum** number of tasks that **must** be completed using technique 1. + +You **must** complete **at least** `k` tasks using technique 1 (they do not need to be the first `k` tasks). + +The remaining tasks may be completed using **either** technique. + +Return an integer denoting the **maximum total points** you can earn. + +**Example 1:** + +**Input:** technique1 = [5,2,10], technique2 = [10,3,8], k = 2 + +**Output:** 22 + +**Explanation:** + +We must complete at least `k = 2` tasks using `technique1`. + +Choosing `technique1[1]` and `technique1[2]` (completed using technique 1), and `technique2[0]` (completed using technique 2), yields the maximum points: `2 + 10 + 10 = 22`. + +**Example 2:** + +**Input:** technique1 = [10,20,30], technique2 = [5,15,25], k = 2 + +**Output:** 60 + +**Explanation:** + +We must complete at least `k = 2` tasks using `technique1`. + +Choosing all tasks using technique 1 yields the maximum points: `10 + 20 + 30 = 60`. + +**Example 3:** + +**Input:** technique1 = [1,2,3], technique2 = [4,5,6], k = 0 + +**Output:** 15 + +**Explanation:** + +Since `k = 0`, we are not required to choose any task using `technique1`. + +Choosing all tasks using technique 2 yields the maximum points: `4 + 5 + 6 = 15`. + +**Constraints:** + +* 1 <= n == technique1.length == technique2.length <= 105 +* 1 <= technique1[i], technique2[i] <= 105 +* `0 <= k <= n` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/Solution.java b/src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/Solution.java new file mode 100644 index 000000000..a48cdb007 --- /dev/null +++ b/src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/Solution.java @@ -0,0 +1,60 @@ +package g3701_3800.s3768_minimum_inversion_count_in_subarrays_of_fixed_length; + +// #Hard #Array #Sliding_Window #Segment_Tree #Senior_Staff #Biweekly_Contest_171 +// #2026_05_08_Time_157_ms_(94.34%)_Space_125.70_MB_(100.00%) + +import java.util.Arrays; + +public class Solution { + public long minInversionCount(int[] nums, int k) { + int n = nums.length; + // discretization of coordinates + int[] sorted = nums.clone(); + Arrays.sort(sorted); + for (int i = 0; i < n; i++) { + nums[i] = Arrays.binarySearch(sorted, nums[i]) + 1; + } + BinaryIndexedTree bit = new BinaryIndexedTree(n); + long invCount = 0L; + long ans = Long.MAX_VALUE; + for (int i = 0; i < n; i++) { + bit.add(nums[i], 1); + invCount += Math.min(i + 1, k) - bit.presum(nums[i]); + if (i < k - 1) { + continue; + } + ans = Math.min(ans, invCount); + invCount -= bit.presum(nums[i - k + 1] - 1); + bit.add(nums[i - k + 1], -1); + } + return ans; + } + + private class BinaryIndexedTree { + private final int[] tree; + + public BinaryIndexedTree(int n) { + tree = new int[n + 1]; + } + + public void add(int i, int val) { + while (i < tree.length) { + tree[i] += val; + i += lowbit(i); + } + } + + public int presum(int i) { + int sum = 0; + while (i > 0) { + sum += tree[i]; + i -= lowbit(i); + } + return sum; + } + + private int lowbit(int n) { + return n & (-n); + } + } +} diff --git a/src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/readme.md b/src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/readme.md new file mode 100644 index 000000000..7088d2594 --- /dev/null +++ b/src/main/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/readme.md @@ -0,0 +1,56 @@ +3768\. Minimum Inversion Count in Subarrays of Fixed Length + +Hard + +You are given an integer array `nums` of length `n` and an integer `k`. + +An **inversion** is a pair of indices `(i, j)` from `nums` such that `i < j` and `nums[i] > nums[j]`. + +The **inversion count** of a **non-empty subarrays** is the number of inversions within it. + +Return the **minimum** inversion count among all **subarrays** of `nums` with length `k`. + +**Example 1:** + +**Input:** nums = [3,1,2,5,4], k = 3 + +**Output:** 0 + +**Explanation:** + +We consider all subarrays of length `k = 3` (indices below are relative to each subarray): + +* `[3, 1, 2]` has 2 inversions: `(0, 1)` and `(0, 2)`. +* `[1, 2, 5]` has 0 inversions. +* `[2, 5, 4]` has 1 inversion: `(1, 2)`. + +The minimum inversion count among all subarrays of length `3` is 0, achieved by subarray `[1, 2, 5]`. + +**Example 2:** + +**Input:** nums = [5,3,2,1], k = 4 + +**Output:** 6 + +**Explanation:** + +There is only one subarray of length `k = 4`: `[5, 3, 2, 1]`. +Within this subarray, the inversions are: `(0, 1)`, `(0, 2)`, `(0, 3)`, `(1, 2)`, `(1, 3)`, and `(2, 3)`. +Total inversions is 6, so the minimum inversion count is 6. + +**Example 3:** + +**Input:** nums = [2,1], k = 1 + +**Output:** 0 + +**Explanation:** + +All subarrays of length `k = 1` contain only one element, so no inversions are possible. +The minimum inversion count is therefore 0. + +**Constraints:** + +* 1 <= n == nums.length <= 105 +* 1 <= nums[i] <= 109 +* `1 <= k <= n` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/Solution.java b/src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/Solution.java new file mode 100644 index 000000000..b7b3832a9 --- /dev/null +++ b/src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/Solution.java @@ -0,0 +1,38 @@ +package g3701_3800.s3769_sort_integers_by_binary_reflection; + +// #Easy #Array #Sorting #Mid_Level #Weekly_Contest_479 +// #2026_05_08_Time_5_ms_(97.23%)_Space_46.52_MB_(97.70%) + +import java.util.PriorityQueue; + +public class Solution { + public int[] sortByReflection(int[] nums) { + PriorityQueue minHeap = + new PriorityQueue<>( + (a, b) -> { + if (a[1] == b[1]) { + return Integer.compare(a[0], b[0]); + } + return Integer.compare(a[1], b[1]); + }); + int[] sortedByReflection = new int[nums.length]; + for (int num : nums) { + minHeap.offer(new int[] {num, reverseBinary(num)}); + } + int idx = 0; + while (!minHeap.isEmpty()) { + sortedByReflection[idx++] = minHeap.poll()[0]; + } + return sortedByReflection; + } + + private int reverseBinary(int num) { + int reversed = 0; + while (num > 0) { + int lastBit = num & 1; + reversed = (reversed << 1) | lastBit; + num = num >> 1; + } + return reversed; + } +} diff --git a/src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/readme.md b/src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/readme.md new file mode 100644 index 000000000..b93acafb7 --- /dev/null +++ b/src/main/java/g3701_3800/s3769_sort_integers_by_binary_reflection/readme.md @@ -0,0 +1,50 @@ +3769\. Sort Integers by Binary Reflection + +Easy + +You are given an integer array `nums`. + +The **binary reflection** of a **positive** integer is defined as the number obtained by reversing the order of its **binary** digits (ignoring any leading zeros) and interpreting the resulting binary number as a decimal. + +Sort the array in **ascending** order based on the binary reflection of each element. If two different numbers have the same binary reflection, the **smaller** original number should appear first. + +Return the resulting sorted array. + +**Example 1:** + +**Input:** nums = [4,5,4] + +**Output:** [4,4,5] + +**Explanation:** + +Binary reflections are: + +* 4 -> (binary) `100` -> (reversed) `001` -> 1 +* 5 -> (binary) `101` -> (reversed) `101` -> 5 +* 4 -> (binary) `100` -> (reversed) `001` -> 1 + +Sorting by the reflected values gives `[4, 4, 5]`. + +**Example 2:** + +**Input:** nums = [3,6,5,8] + +**Output:** [8,3,6,5] + +**Explanation:** + +Binary reflections are: + +* 3 -> (binary) `11` -> (reversed) `11` -> 3 +* 6 -> (binary) `110` -> (reversed) `011` -> 3 +* 5 -> (binary) `101` -> (reversed) `101` -> 5 +* 8 -> (binary) `1000` -> (reversed) `0001` -> 1 + +Sorting by the reflected values gives `[8, 3, 6, 5]`. +Note that 3 and 6 have the same reflection, so we arrange them in increasing order of original value. + +**Constraints:** + +* `1 <= nums.length <= 100` +* 1 <= nums[i] <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/Solution.java b/src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/Solution.java new file mode 100644 index 000000000..d14e8e197 --- /dev/null +++ b/src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/Solution.java @@ -0,0 +1,29 @@ +package g3701_3800.s3770_largest_prime_from_consecutive_prime_sum; + +// #Medium #Array #Math #Number_Theory #Senior #Weekly_Contest_479 +// #2026_05_08_Time_1_ms_(100.00%)_Space_42.47_MB_(96.28%) + +public class Solution { + static int[] ppr = { + 2, 5, 17, 41, 197, 281, 7699, 8893, 22039, 24133, 25237, 28697, 32353, 37561, 38921, 43201, + 44683, 55837, 61027, 66463, 70241, 86453, 102001, 109147, 116533, 119069, 121631, 129419, + 132059, 263171, 287137, 325019, 329401, 333821, 338279, 342761, 360979, 379667, 393961, + 398771 + }; + + public int largestPrime(int n) { + int i = 0; + int j = ppr.length - 1; + int r = 0; + while (i <= j) { + int m = (i + j) >> 1; + if (ppr[m] <= n) { + r = ppr[m]; + i = m + 1; + } else { + j = m - 1; + } + } + return r; + } +} diff --git a/src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/readme.md b/src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/readme.md new file mode 100644 index 000000000..303111e34 --- /dev/null +++ b/src/main/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/readme.md @@ -0,0 +1,40 @@ +3770\. Largest Prime from Consecutive Prime Sum + +Medium + +You are given an integer `n`. + +Return the **largest prime number** less than or equal to `n` that can be expressed as the **sum** of one or more **consecutive prime numbers** starting from 2. If no such number exists, return 0. + +**Example 1:** + +**Input:** n = 20 + +**Output:** 17 + +**Explanation:** + +The prime numbers less than or equal to `n = 20` which are consecutive prime sums are: + +* `2 = 2` + +* `5 = 2 + 3` + +* `17 = 2 + 3 + 5 + 7` + + +The largest is 17, so it is the answer. + +**Example 2:** + +**Input:** n = 2 + +**Output:** 2 + +**Explanation:** + +The only consecutive prime sum less than or equal to 2 is 2 itself. + +**Constraints:** + +* 1 <= n <= 5 * 105 \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/SolutionTest.java b/src/test/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/SolutionTest.java new file mode 100644 index 000000000..a2a375ff3 --- /dev/null +++ b/src/test/java/g3701_3800/s3760_maximum_substrings_with_distinct_start/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3760_maximum_substrings_with_distinct_start; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maxDistinct() { + assertThat(new Solution().maxDistinct("abca"), equalTo(3)); + } + + @Test + void maxDistinct2() { + assertThat(new Solution().maxDistinct("aaaa"), equalTo(1)); + } + + @Test + void maxDistinct3() { + assertThat(new Solution().maxDistinct("abcdefghijklmnopqrstuvwxyz"), equalTo(26)); + } +} diff --git a/src/test/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/SolutionTest.java b/src/test/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/SolutionTest.java new file mode 100644 index 000000000..e052f0d18 --- /dev/null +++ b/src/test/java/g3701_3800/s3761_minimum_absolute_distance_between_mirror_pairs/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3761_minimum_absolute_distance_between_mirror_pairs; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minMirrorPairDistance() { + assertThat(new Solution().minMirrorPairDistance(new int[] {12, 21}), equalTo(1)); + } + + @Test + void minMirrorPairDistance2() { + assertThat(new Solution().minMirrorPairDistance(new int[] {10, 1, 100}), equalTo(1)); + } + + @Test + void minMirrorPairDistance3() { + assertThat(new Solution().minMirrorPairDistance(new int[] {12, 34, 56}), equalTo(-1)); + } +} diff --git a/src/test/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/SolutionTest.java b/src/test/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/SolutionTest.java new file mode 100644 index 000000000..bd3eaa460 --- /dev/null +++ b/src/test/java/g3701_3800/s3762_minimum_operations_to_equalize_subarrays/SolutionTest.java @@ -0,0 +1,26 @@ +package g3701_3800.s3762_minimum_operations_to_equalize_subarrays; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minOperations() { + long[] result = new Solution().minOperations(new int[] {1, 3, 5}, 2, new int[][] {{0, 2}}); + assertThat(result[0], equalTo(2L)); + } + + @Test + void minOperations2() { + long[] result = new Solution().minOperations(new int[] {1, 3, 5}, 2, new int[][] {{0, 1}}); + assertThat(result[0], equalTo(1L)); + } + + @Test + void minOperations3() { + long[] result = new Solution().minOperations(new int[] {1, 2}, 2, new int[][] {{0, 1}}); + assertThat(result[0], equalTo(-1L)); + } +} diff --git a/src/test/java/g3701_3800/s3764_most_common_course_pairs/MysqlTest.java b/src/test/java/g3701_3800/s3764_most_common_course_pairs/MysqlTest.java new file mode 100644 index 000000000..874284821 --- /dev/null +++ b/src/test/java/g3701_3800/s3764_most_common_course_pairs/MysqlTest.java @@ -0,0 +1,94 @@ +package g3701_3800.s3764_most_common_course_pairs; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import javax.sql.DataSource; +import org.junit.jupiter.api.Test; +import org.zapodot.junit.db.annotations.EmbeddedDatabase; +import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest; +import org.zapodot.junit.db.common.CompatibilityMode; + +@EmbeddedDatabaseTest( + compatibilityMode = CompatibilityMode.MySQL, + initialSqls = + "CREATE TABLE course_completions (" + + " user_id INTEGER," + + " course_id INTEGER," + + " course_name VARCHAR(512)," + + " completion_date DATE," + + " course_rating INTEGER," + + " PRIMARY KEY (user_id, course_id)" + + ");" + + "INSERT INTO course_completions (user_id, course_id, course_name, completion_date," + + " course_rating) VALUES" + + "(1, 101, 'Python Basics', '2024-01-05', 5)," + + "(1, 102, 'SQL Fundamentals', '2024-02-10', 4)," + + "(1, 103, 'JavaScript', '2024-03-15', 5)," + + "(1, 104, 'React Basics', '2024-04-20', 4)," + + "(1, 105, 'Node.js', '2024-05-25', 5)," + + "(1, 106, 'Docker', '2024-06-30', 4)," + + "(2, 101, 'Python Basics', '2024-01-08', 4)," + + "(2, 104, 'React Basics', '2024-02-14', 5)," + + "(2, 105, 'Node.js', '2024-03-20', 4)," + + "(2, 106, 'Docker', '2024-04-25', 5)," + + "(2, 107, 'AWS Fundamentals', '2024-05-30', 4)," + + "(3, 101, 'Python Basics', '2024-01-10', 3)," + + "(3, 102, 'SQL Fundamentals', '2024-02-12', 3)," + + "(3, 103, 'JavaScript', '2024-03-18', 3)," + + "(3, 104, 'React Basics', '2024-04-22', 2)," + + "(3, 105, 'Node.js', '2024-05-28', 3)," + + "(4, 101, 'Python Basics', '2024-01-12', 5)," + + "(4, 108, 'Data Science', '2024-02-16', 5)," + + "(4, 109, 'Machine Learning', '2024-03-22', 5);") +class MysqlTest { + @Test + void testScript(@EmbeddedDatabase DataSource dataSource) + throws SQLException, FileNotFoundException { + try (final Connection connection = dataSource.getConnection()) { + try (final Statement statement = connection.createStatement(); + final ResultSet resultSet = + statement.executeQuery( + new BufferedReader( + new FileReader( + "src/main/java/g3701_3800/" + + "s3764_most_common_course_pairs/" + + "script.sql")) + .lines() + .collect(Collectors.joining("\n")) + .replaceAll("#.*?\\r?\\n", ""))) { + List actualRows = new ArrayList<>(); + while (resultSet.next()) { + actualRows.add( + resultSet.getString(1) + + "|" + + resultSet.getString(2) + + "|" + + resultSet.getString(3)); + } + + List expectedRows = + Arrays.asList( + "Node.js|Docker|2", + "React Basics|Node.js|2", + "Docker|AWS Fundamentals|1", + "JavaScript|React Basics|1", + "Python Basics|React Basics|1", + "Python Basics|SQL Fundamentals|1", + "SQL Fundamentals|JavaScript|1"); + assertThat(actualRows, equalTo(expectedRows)); + } + } + } +} diff --git a/src/test/java/g3701_3800/s3765_complete_prime_number/SolutionTest.java b/src/test/java/g3701_3800/s3765_complete_prime_number/SolutionTest.java new file mode 100644 index 000000000..b1e3478a0 --- /dev/null +++ b/src/test/java/g3701_3800/s3765_complete_prime_number/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3765_complete_prime_number; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void completePrime() { + assertThat(new Solution().completePrime(239), equalTo(false)); + } + + @Test + void completePrime2() { + assertThat(new Solution().completePrime(21), equalTo(false)); + } + + @Test + void completePrime3() { + assertThat(new Solution().completePrime(2), equalTo(true)); + } +} diff --git a/src/test/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/SolutionTest.java b/src/test/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/SolutionTest.java new file mode 100644 index 000000000..e0113c123 --- /dev/null +++ b/src/test/java/g3701_3800/s3766_minimum_operations_to_make_binary_palindrome/SolutionTest.java @@ -0,0 +1,31 @@ +package g3701_3800.s3766_minimum_operations_to_make_binary_palindrome; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minOperations() { + int[] result = new Solution().minOperations(new int[] {5, 6, 7}); + assertThat(result[0], equalTo(0)); + assertThat(result[1], equalTo(1)); + assertThat(result[2], equalTo(0)); + } + + @Test + void minOperations2() { + int[] result = new Solution().minOperations(new int[] {10}); + assertThat(result[0], equalTo(1)); + } + + @Test + void minOperations3() { + int[] result = new Solution().minOperations(new int[] {1, 2, 3, 4}); + assertThat(result[0], equalTo(0)); + assertThat(result[1], equalTo(1)); + assertThat(result[2], equalTo(0)); + assertThat(result[3], equalTo(1)); + } +} diff --git a/src/test/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/SolutionTest.java b/src/test/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/SolutionTest.java new file mode 100644 index 000000000..fe39fda45 --- /dev/null +++ b/src/test/java/g3701_3800/s3767_maximize_points_after_choosing_k_tasks/SolutionTest.java @@ -0,0 +1,62 @@ +package g3701_3800.s3767_maximize_points_after_choosing_k_tasks; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maxPoints() { + assertThat( + new Solution().maxPoints(new int[] {5, 1, 3}, new int[] {4, 10, 2}, 1), + equalTo(18L)); + } + + @Test + void maxPoints2() { + assertThat(new Solution().maxPoints(new int[] {1, 2}, new int[] {3, 4}, 0), equalTo(7L)); + } + + @Test + void maxPoints3() { + assertThat( + new Solution().maxPoints(new int[] {7, 2, 5}, new int[] {1, 8, 4}, 3), + equalTo(14L)); + } + + @Test + void maxPoints4() { + assertThat( + new Solution().maxPoints(new int[] {5, 4, 3}, new int[] {3, 4, 1}, 3), + equalTo(12L)); + } + + @Test + void maxPoints5() { + assertThat( + new Solution().maxPoints(new int[] {1, 2, 3}, new int[] {5, 5, 1}, 1), + equalTo(13L)); + } + + @Test + void maxPoints6() { + assertThat( + new Solution().maxPoints(new int[] {1, 1, 1, 1}, new int[] {3, 4, 2, 6}, 2), + equalTo(12L)); + } + + @Test + void maxPoints7() { + assertThat( + new Solution().maxPoints(new int[] {1, 1, 1, 1}, new int[] {6, 5, 4, 0}, 2), + equalTo(13L)); + } + + @Test + void maxPoints8() { + assertThat( + new Solution().maxPoints(new int[] {7, 8, 9}, new int[] {100, 100, 100}, 3), + equalTo(24L)); + } +} diff --git a/src/test/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/SolutionTest.java b/src/test/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/SolutionTest.java new file mode 100644 index 000000000..60ca5c1e0 --- /dev/null +++ b/src/test/java/g3701_3800/s3768_minimum_inversion_count_in_subarrays_of_fixed_length/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3768_minimum_inversion_count_in_subarrays_of_fixed_length; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minInversionCount() { + assertThat(new Solution().minInversionCount(new int[] {3, 1, 2}, 2), equalTo(0L)); + } + + @Test + void minInversionCount2() { + assertThat(new Solution().minInversionCount(new int[] {3, 2, 1}, 3), equalTo(3L)); + } + + @Test + void minInversionCount3() { + assertThat(new Solution().minInversionCount(new int[] {1, 2, 3, 4}, 2), equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3769_sort_integers_by_binary_reflection/SolutionTest.java b/src/test/java/g3701_3800/s3769_sort_integers_by_binary_reflection/SolutionTest.java new file mode 100644 index 000000000..88d8e9ac5 --- /dev/null +++ b/src/test/java/g3701_3800/s3769_sort_integers_by_binary_reflection/SolutionTest.java @@ -0,0 +1,31 @@ +package g3701_3800.s3769_sort_integers_by_binary_reflection; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void sortByReflection() { + int[] result = new Solution().sortByReflection(new int[] {1, 2, 3}); + assertThat(result[0], equalTo(1)); + assertThat(result[1], equalTo(2)); + assertThat(result[2], equalTo(3)); + } + + @Test + void sortByReflection2() { + int[] result = new Solution().sortByReflection(new int[] {0, 1, 2}); + assertThat(result[0], equalTo(0)); + assertThat(result[1], equalTo(1)); + assertThat(result[2], equalTo(2)); + } + + @Test + void sortByReflection3() { + int[] result = new Solution().sortByReflection(new int[] {6, 9}); + assertThat(result[0], equalTo(6)); + assertThat(result[1], equalTo(9)); + } +} diff --git a/src/test/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/SolutionTest.java b/src/test/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/SolutionTest.java new file mode 100644 index 000000000..be82bfa3a --- /dev/null +++ b/src/test/java/g3701_3800/s3770_largest_prime_from_consecutive_prime_sum/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3770_largest_prime_from_consecutive_prime_sum; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void largestPrime() { + assertThat(new Solution().largestPrime(100), equalTo(41)); + } + + @Test + void largestPrime2() { + assertThat(new Solution().largestPrime(2), equalTo(2)); + } + + @Test + void largestPrime3() { + assertThat(new Solution().largestPrime(1), equalTo(0)); + } +} From 0444f8c4871ef5b6ee979a59772ba70809ae33eb Mon Sep 17 00:00:00 2001 From: ThanhNIT <93962044+ThanhNIT@users.noreply.github.com> Date: Sat, 23 May 2026 20:43:44 +0700 Subject: [PATCH 34/34] Added tasks 3783-3805 --- .../Solution.java | 19 +++ .../readme.md | 48 ++++++++ .../Solution.java | 22 ++++ .../readme.md | 46 +++++++ .../Solution.java | 41 +++++++ .../readme.md | 63 ++++++++++ .../Solution.java | 51 ++++++++ .../readme.md | 78 ++++++++++++ .../Solution.java | 22 ++++ .../s3788_maximum_score_of_a_split/readme.md | 53 ++++++++ .../Solution.java | 18 +++ .../readme.md | 52 ++++++++ .../Solution.java | 20 +++ .../readme.md | 43 +++++++ .../Solution.java | 49 ++++++++ .../readme.md | 46 +++++++ .../readme.md | 76 ++++++++++++ .../script.sql | 7 ++ .../s3794_reverse_string_prefix/Solution.java | 16 +++ .../s3794_reverse_string_prefix/readme.md | 43 +++++++ .../Solution.java | 43 +++++++ .../readme.md | 43 +++++++ .../Solution.java | 28 +++++ .../readme.md | 48 ++++++++ .../Solution.java | 55 +++++++++ .../readme.md | 88 ++++++++++++++ .../s3798_largest_even_number/Solution.java | 16 +++ .../s3798_largest_even_number/readme.md | 44 +++++++ .../s3799_word_squares_ii/Solution.java | 37 ++++++ .../s3799_word_squares_ii/readme.md | 56 +++++++++ .../Solution.java | 39 ++++++ .../readme.md | 57 +++++++++ .../Solution.java | 114 ++++++++++++++++++ .../readme.md | 89 ++++++++++++++ .../Solution.java | 28 +++++ .../s3803_count_residue_prefixes/readme.md | 50 ++++++++ .../Solution.java | 24 ++++ .../readme.md | 37 ++++++ .../Solution.java | 27 +++++ .../s3805_count_caesar_cipher_pairs/readme.md | 52 ++++++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 30 +++++ .../SolutionTest.java | 40 ++++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 23 ++++ .../MysqlTest.java | 73 +++++++++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 26 ++++ .../SolutionTest.java | 28 +++++ .../SolutionTest.java | 23 ++++ .../s3799_word_squares_ii/SolutionTest.java | 29 +++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 31 +++++ .../SolutionTest.java | 23 ++++ .../SolutionTest.java | 18 +++ .../SolutionTest.java | 18 +++ 60 files changed, 2334 insertions(+) create mode 100644 src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/Solution.java create mode 100644 src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/readme.md create mode 100644 src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/Solution.java create mode 100644 src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/readme.md create mode 100644 src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/Solution.java create mode 100644 src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/readme.md create mode 100644 src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/Solution.java create mode 100644 src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/readme.md create mode 100644 src/main/java/g3701_3800/s3788_maximum_score_of_a_split/Solution.java create mode 100644 src/main/java/g3701_3800/s3788_maximum_score_of_a_split/readme.md create mode 100644 src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/Solution.java create mode 100644 src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/readme.md create mode 100644 src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/Solution.java create mode 100644 src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/readme.md create mode 100644 src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/Solution.java create mode 100644 src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/readme.md create mode 100644 src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/readme.md create mode 100644 src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/script.sql create mode 100644 src/main/java/g3701_3800/s3794_reverse_string_prefix/Solution.java create mode 100644 src/main/java/g3701_3800/s3794_reverse_string_prefix/readme.md create mode 100644 src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/Solution.java create mode 100644 src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/readme.md create mode 100644 src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/Solution.java create mode 100644 src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/readme.md create mode 100644 src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/Solution.java create mode 100644 src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/readme.md create mode 100644 src/main/java/g3701_3800/s3798_largest_even_number/Solution.java create mode 100644 src/main/java/g3701_3800/s3798_largest_even_number/readme.md create mode 100644 src/main/java/g3701_3800/s3799_word_squares_ii/Solution.java create mode 100644 src/main/java/g3701_3800/s3799_word_squares_ii/readme.md create mode 100644 src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/Solution.java create mode 100644 src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/readme.md create mode 100644 src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/Solution.java create mode 100644 src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/readme.md create mode 100644 src/main/java/g3801_3900/s3803_count_residue_prefixes/Solution.java create mode 100644 src/main/java/g3801_3900/s3803_count_residue_prefixes/readme.md create mode 100644 src/main/java/g3801_3900/s3804_number_of_centered_subarrays/Solution.java create mode 100644 src/main/java/g3801_3900/s3804_number_of_centered_subarrays/readme.md create mode 100644 src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/Solution.java create mode 100644 src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/readme.md create mode 100644 src/test/java/g3701_3800/s3783_mirror_distance_of_an_integer/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3788_maximum_score_of_a_split/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3790_smallest_all_ones_multiple/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3793_find_users_with_high_token_usage/MysqlTest.java create mode 100644 src/test/java/g3701_3800/s3794_reverse_string_prefix/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3798_largest_even_number/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3799_word_squares_ii/SolutionTest.java create mode 100644 src/test/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/SolutionTest.java create mode 100644 src/test/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/SolutionTest.java create mode 100644 src/test/java/g3801_3900/s3803_count_residue_prefixes/SolutionTest.java create mode 100644 src/test/java/g3801_3900/s3804_number_of_centered_subarrays/SolutionTest.java create mode 100644 src/test/java/g3801_3900/s3805_count_caesar_cipher_pairs/SolutionTest.java diff --git a/src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/Solution.java b/src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/Solution.java new file mode 100644 index 000000000..8707b773f --- /dev/null +++ b/src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/Solution.java @@ -0,0 +1,19 @@ +package g3701_3800.s3783_mirror_distance_of_an_integer; + +// #Easy #Math #Mid_Level #Weekly_Contest_481 #2026_05_22_Time_1_ms_(99.88%)_Space_42.74_MB_(18.96%) + +public class Solution { + private int rev(int n) { + int a = 0; + while (n > 0) { + a = a * 10 + (n % 10); + n /= 10; + } + return a; + } + + public int mirrorDistance(int n) { + int m = rev(n); + return Math.abs(m - n); + } +} diff --git a/src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/readme.md b/src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/readme.md new file mode 100644 index 000000000..72f2e1bf9 --- /dev/null +++ b/src/main/java/g3701_3800/s3783_mirror_distance_of_an_integer/readme.md @@ -0,0 +1,48 @@ +3783\. Mirror Distance of an Integer + +Easy + +You are given an integer `n`. + +Define its **mirror distance** as: `abs(n - reverse(n))` where `reverse(n)` is the integer formed by reversing the digits of `n`. + +Return an integer denoting the mirror distance of `n`. + +`abs(x)` denotes the absolute value of `x`. + +**Example 1:** + +**Input:** n = 25 + +**Output:** 27 + +**Explanation:** + +* `reverse(25) = 52`. +* Thus, the answer is `abs(25 - 52) = 27`. + +**Example 2:** + +**Input:** n = 10 + +**Output:** 9 + +**Explanation:** + +* `reverse(10) = 01` which is 1. +* Thus, the answer is `abs(10 - 1) = 9`. + +**Example 3:** + +**Input:** n = 7 + +**Output:** 0 + +**Explanation:** + +* `reverse(7) = 7`. +* Thus, the answer is `abs(7 - 7) = 0`. + +**Constraints:** + +* 1 <= n <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/Solution.java b/src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/Solution.java new file mode 100644 index 000000000..f1affc006 --- /dev/null +++ b/src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/Solution.java @@ -0,0 +1,22 @@ +package g3701_3800.s3784_minimum_deletion_cost_to_make_all_characters_equal; + +// #Medium #Array #String #Hash_Table #Enumeration #Senior #Weekly_Contest_481 +// #2026_05_22_Time_3_ms_(94.77%)_Space_104.58_MB_(97.09%) + +public class Solution { + public long minCost(String s, int[] cost) { + long[] arr = new long[26]; + long m = Integer.MIN_VALUE; + long sum = 0; + for (int i = 0; i < s.length(); i++) { + arr[s.charAt(i) - 'a'] += cost[i]; + } + for (long i : arr) { + if (i > m) { + m = i; + } + sum += i; + } + return sum - m; + } +} diff --git a/src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/readme.md b/src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/readme.md new file mode 100644 index 000000000..a40c95528 --- /dev/null +++ b/src/main/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/readme.md @@ -0,0 +1,46 @@ +3784\. Minimum Deletion Cost to Make All Characters Equal + +Medium + +You are given a string `s` of length `n` and an integer array `cost` of the same length, where `cost[i]` is the cost to **delete** the ith character of `s`. + +You may delete any number of characters from `s` (possibly none), such that the resulting string is **non-empty** and consists of **equal** characters. + +Return an integer denoting the **minimum** total deletion cost required. + +**Example 1:** + +**Input:** s = "aabaac", cost = [1,2,3,4,1,10] + +**Output:** 11 + +**Explanation:** + +Deleting the characters at indices 0, 1, 2, 3, 4 results in the string `"c"`, which consists of equal characters, and the total cost is `cost[0] + cost[1] + cost[2] + cost[3] + cost[4] = 1 + 2 + 3 + 4 + 1 = 11`. + +**Example 2:** + +**Input:** s = "abc", cost = [10,5,8] + +**Output:** 13 + +**Explanation:** + +Deleting the characters at indices 1 and 2 results in the string `"a"`, which consists of equal characters, and the total cost is `cost[1] + cost[2] = 5 + 8 = 13`. + +**Example 3:** + +**Input:** s = "zzzzz", cost = [67,67,67,67,67] + +**Output:** 0 + +**Explanation:** + +All characters in `s` are equal, so the deletion cost is 0. + +**Constraints:** + +* `n == s.length == cost.length` +* 1 <= n <= 105 +* 1 <= cost[i] <= 109 +* `s` consists of lowercase English letters. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/Solution.java b/src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/Solution.java new file mode 100644 index 000000000..2dbf8ed20 --- /dev/null +++ b/src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/Solution.java @@ -0,0 +1,41 @@ +package g3701_3800.s3785_minimum_swaps_to_avoid_forbidden_values; + +// #Hard #Array #Hash_Table #Greedy #Counting #Senior_Staff #Weekly_Contest_481 +// #2026_05_22_Time_88_ms_(86.89%)_Space_159.68_MB_(81.97%) + +import java.util.HashMap; +import java.util.Map; + +public class Solution { + public int minSwaps(int[] nums, int[] forbidden) { + int n = nums.length; + Map map = new HashMap<>(); + for (int num : nums) { + map.put(num, map.getOrDefault(num, 0) + 1); + } + for (int num : forbidden) { + map.put(num, map.getOrDefault(num, 0) + 1); + } + for (int val : map.values()) { + if (val > n) { + return -1; + } + } + Map map2 = new HashMap<>(); + int total = 0; + for (int i = 0; i < n; i++) { + if (nums[i] == forbidden[i]) { + map2.put(nums[i], map2.getOrDefault(nums[i], 0) + 1); + total++; + } + } + if (total == 0) { + return 0; + } + int maxSwaps = 0; + for (int num : map2.values()) { + maxSwaps = Math.max(maxSwaps, num); + } + return Math.max(maxSwaps, (total + 1) / 2); + } +} diff --git a/src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/readme.md b/src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/readme.md new file mode 100644 index 000000000..1d51949cc --- /dev/null +++ b/src/main/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/readme.md @@ -0,0 +1,63 @@ +3785\. Minimum Swaps to Avoid Forbidden Values + +Hard + +You are given two integer arrays, `nums` and `forbidden`, each of length `n`. + +You may perform the following operation any number of times (including zero): + +* Choose two **distinct** indices `i` and `j`, and swap `nums[i]` with `nums[j]`. + +Return the **minimum** number of swaps required such that, for every index `i`, the value of `nums[i]` is **not equal** to `forbidden[i]`. If no amount of swaps can ensure that every index avoids its forbidden value, return -1. + +**Example 1:** + +**Input:** nums = [1,2,3], forbidden = [3,2,1] + +**Output:** 1 + +**Explanation:** + +One optimal set of swaps: + +* Select indices `i = 0` and `j = 1` in `nums` and swap them, resulting in `nums = [2, 1, 3]`. +* After this swap, for every index `i`, `nums[i]` is not equal to `forbidden[i]`. + +**Example 2:** + +**Input:** nums = [4,6,6,5], forbidden = [4,6,5,5] + +**Output:** 2 + +**Explanation:** + +One optimal set of swaps: + +* Select indices `i = 0` and `j = 2` in `nums` and swap them, resulting in `nums = [6, 6, 4, 5]`. +* Select indices `i = 1` and `j = 3` in `nums` and swap them, resulting in `nums = [6, 5, 4, 6]`. +* After these swaps, for every index `i`, `nums[i]` is not equal to `forbidden[i]`. + +**Example 3:** + +**Input:** nums = [7,7], forbidden = [8,7] + +**Output:** \-1 + +**Explanation:** + +It is not possible to make `nums[i]` different from `forbidden[i]` for all indices. + +**Example 4:** + +**Input:** nums = [1,2], forbidden = [2,1] + +**Output:** 0 + +**Explanation:** + +No swaps are required because `nums[i]` is already different from `forbidden[i]` for all indices, so the answer is 0. + +**Constraints:** + +* 1 <= n == nums.length == forbidden.length <= 105 +* 1 <= nums[i], forbidden[i] <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/Solution.java b/src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/Solution.java new file mode 100644 index 000000000..19a5f634a --- /dev/null +++ b/src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/Solution.java @@ -0,0 +1,51 @@ +package g3701_3800.s3786_total_sum_of_interaction_cost_in_tree_groups; + +// #Hard #Array #Tree #Senior_Staff #Weekly_Contest_481 #Depth_First_Search +// #2026_05_22_Time_82_ms_(90.67%)_Space_296.78_MB_(21.33%) + +import java.util.ArrayList; +import java.util.List; + +public class Solution { + private long totalCost = 0; + private int[][] counts; + private int[] totalInGroup; + private List> adj; + + public long interactionCosts(int n, int[][] edges, int[] group) { + adj = new ArrayList<>(); + for (int i = 0; i < n; i++) { + adj.add(new ArrayList<>()); + } + for (int[] edge : edges) { + adj.get(edge[0]).add(edge[1]); + adj.get(edge[1]).add(edge[0]); + } + totalInGroup = new int[21]; + for (int g : group) { + totalInGroup[g]++; + } + counts = new int[n][21]; + dfs(0, -1, group); + return totalCost; + } + + private void dfs(int u, int p, int[] group) { + counts[u][group[u]] = 1; + for (int v : adj.get(u)) { + if (v == p) { + continue; + } + dfs(v, u, group); + for (int g = 1; g <= 20; g++) { + if (totalInGroup[g] < 2) { + continue; + } + long inSubtree = counts[v][g]; + long outsideSubtree = totalInGroup[g] - inSubtree; + totalCost += inSubtree * outsideSubtree; + counts[u][g] += counts[v][g]; + } + } + } +} diff --git a/src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/readme.md b/src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/readme.md new file mode 100644 index 000000000..e4f28b2ab --- /dev/null +++ b/src/main/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/readme.md @@ -0,0 +1,78 @@ +3786\. Total Sum of Interaction Cost in Tree Groups + +Hard + +You are given an integer `n` and an undirected tree with `n` nodes numbered from 0 to `n - 1`. This is represented by a 2D array `edges` of length `n - 1`, where edges[i] = [ui, vi] indicates an undirected edge between nodes ui and vi. + +You are also given an integer array `group` of length `n`, where `group[i]` denotes the group label assigned to node `i`. + +* Two nodes `u` and `v` are considered part of the same group if `group[u] == group[v]`. +* The **interaction cost** between `u` and `v` is defined as the number of edges on the unique path connecting them in the tree. + +Return an integer denoting the **sum** of interaction costs over all **unordered** pairs `(u, v)` with `u != v` such that `group[u] == group[v]`. + +**Example 1:** + +**Input:** n = 3, edges = [[0,1],[1,2]], group = [1,1,1] + +**Output:** 4 + +**Explanation:** + +**![](https://assets.leetcode.com/uploads/2025/09/24/screenshot-2025-09-24-at-50538-pm.png)** + +All nodes belong to group 1. The interaction costs between the pairs of nodes are: + +* Nodes `(0, 1)`: 1 +* Nodes `(1, 2)`: 1 +* Nodes `(0, 2)`: 2 + +Thus, the total interaction cost is `1 + 1 + 2 = 4`. + +**Example 2:** + +**Input:** n = 3, edges = [[0,1],[1,2]], group = [3,2,3] + +**Output:** 2 + +**Explanation:** + +* Nodes 0 and 2 belong to group 3. The interaction cost between this pair is 2. +* Node 1 belongs to a different group and forms no valid pair. Therefore, the total interaction cost is 2. + +**Example 3:** + +**Input:** n = 4, edges = [[0,1],[0,2],[0,3]], group = [1,1,4,4] + +**Output:** 3 + +**Explanation:** + +![](https://assets.leetcode.com/uploads/2025/09/24/screenshot-2025-09-24-at-51312-pm.png) + +Nodes belonging to the same groups and their interaction costs are: + +* Group 1: Nodes `(0, 1)`: 1 +* Group 4: Nodes `(2, 3)`: 2 + +Thus, the total interaction cost is `1 + 2 = 3`. + +**Example 4:** + +**Input:** n = 2, edges = [[0,1]], group = [9,8] + +**Output:** 0 + +**Explanation:** + +All nodes belong to different groups and there are no valid pairs. Therefore, the total interaction cost is 0. + +**Constraints:** + +* 1 <= n <= 105 +* `edges.length == n - 1` +* edges[i] = [ui, vi] +* 0 <= ui, vi <= n - 1 +* `group.length == n` +* `1 <= group[i] <= 20` +* The input is generated such that `edges` represents a valid tree. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3788_maximum_score_of_a_split/Solution.java b/src/main/java/g3701_3800/s3788_maximum_score_of_a_split/Solution.java new file mode 100644 index 000000000..76fccd3f6 --- /dev/null +++ b/src/main/java/g3701_3800/s3788_maximum_score_of_a_split/Solution.java @@ -0,0 +1,22 @@ +package g3701_3800.s3788_maximum_score_of_a_split; + +// #Medium #Array #Prefix_Sum #Senior #Weekly_Contest_482 +// #2026_05_22_Time_2_ms_(100.00%)_Space_113.41_MB_(96.82%) + +public class Solution { + public long maximumScore(int[] nums) { + long ans = nums[0] - (long) nums[1]; + long prefixSum = 0; + int n = nums.length; + int min = nums[n - 1]; + for (int i = 0; i < n - 1; i++) { + prefixSum += nums[i]; + } + for (int i = n - 2; i >= 0; i--) { + ans = Math.max(ans, prefixSum - min); + min = Math.min(min, nums[i]); + prefixSum -= nums[i]; + } + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3788_maximum_score_of_a_split/readme.md b/src/main/java/g3701_3800/s3788_maximum_score_of_a_split/readme.md new file mode 100644 index 000000000..4b142a2e2 --- /dev/null +++ b/src/main/java/g3701_3800/s3788_maximum_score_of_a_split/readme.md @@ -0,0 +1,53 @@ +3788\. Maximum Score of a Split + +Medium + +You are given an integer array `nums` of length `n`. + +Choose an index `i` such that `0 <= i < n - 1`. + +For a chosen split index `i`: + +* Let `prefixSum(i)` be the sum of `nums[0] + nums[1] + ... + nums[i]`. +* Let `suffixMin(i)` be the minimum value among `nums[i + 1], nums[i + 2], ..., nums[n - 1]`. + +The **score** of a split at index `i` is defined as: + +`score(i) = prefixSum(i) - suffixMin(i)` + +Return an integer denoting the **maximum** score over all valid split indices. + +**Example 1:** + +**Input:** nums = [10,-1,3,-4,-5] + +**Output:** 17 + +**Explanation:** + +The optimal split is at `i = 2`, `score(2) = prefixSum(2) - suffixMin(2) = (10 + (-1) + 3) - (-5) = 17`. + +**Example 2:** + +**Input:** nums = [-7,-5,3] + +**Output:** \-2 + +**Explanation:** + +The optimal split is at `i = 0`, `score(0) = prefixSum(0) - suffixMin(0) = (-7) - (-5) = -2`. + +**Example 3:** + +**Input:** nums = [1,1] + +**Output:** 0 + +**Explanation:** + +The only valid split is at `i = 0`, `score(0) = prefixSum(0) - suffixMin(0) = 1 - 1 = 0`. + +**Constraints:** + +* 2 <= nums.length <= 105 +* -109 <= nums[i] <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/Solution.java b/src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/Solution.java new file mode 100644 index 000000000..cee0972e2 --- /dev/null +++ b/src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/Solution.java @@ -0,0 +1,18 @@ +package g3701_3800.s3789_minimum_cost_to_acquire_required_items; + +// #Medium #Math #Greedy #Staff #Weekly_Contest_482 +// #2026_05_22_Time_1_ms_(100.00%)_Space_42.78_MB_(58.24%) + +public class Solution { + public long minimumCost(int cost1, int cost2, int costBoth, int need1, int need2) { + long min; + long max; + long ans; + min = Math.min(need1, need2); + max = Math.max(need1, need2); + ans = (long) need1 * cost1 + (long) need2 * cost2; + ans = Math.min(ans, min * costBoth + (need1 - min) * cost1 + (need2 - min) * cost2); + ans = Math.min(ans, max * costBoth); + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/readme.md b/src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/readme.md new file mode 100644 index 000000000..da4152326 --- /dev/null +++ b/src/main/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/readme.md @@ -0,0 +1,52 @@ +3789\. Minimum Cost to Acquire Required Items + +Medium + +You are given five integers `cost1`, `cost2`, `costBoth`, `need1`, and `need2`. + +There are three types of items available: + +* An item of **type 1** costs `cost1` and contributes 1 unit to the type 1 requirement only. +* An item of **type 2** costs `cost2` and contributes 1 unit to the type 2 requirement only. +* An item of **type 3** costs `costBoth` and contributes 1 unit to **both** type 1 and type 2 requirements. + +You must collect enough items so that the total contribution toward type 1 is **at least** `need1` and the total contribution toward type 2 is **at least** `need2`. + +Return an integer representing the **minimum** possible total cost to achieve these requirements. + +**Example 1:** + +**Input:** cost1 = 3, cost2 = 2, costBoth = 1, need1 = 3, need2 = 2 + +**Output:** 3 + +**Explanation:** + +After buying three type 3 items, which cost `3 * 1 = 3`, the total contribution to type 1 is 3 (`>= need1 = 3`) and to type 2 is 3 (`>= need2 = 2`). +Any other valid combination would cost more, so the minimum total cost is 3. + +**Example 2:** + +**Input:** cost1 = 5, cost2 = 4, costBoth = 15, need1 = 2, need2 = 3 + +**Output:** 22 + +**Explanation:** + +We buy `need1 = 2` items of type 1 and `need2 = 3` items of type 2: `2 * 5 + 3 * 4 = 10 + 12 = 22`. +Any other valid combination would cost more, so the minimum total cost is 22. + +**Example 3:** + +**Input:** cost1 = 5, cost2 = 4, costBoth = 15, need1 = 0, need2 = 0 + +**Output:** 0 + +**Explanation:** + +Since no items are required (`need1 = need2 = 0`), we buy nothing and pay 0. + +**Constraints:** + +* 1 <= cost1, cost2, costBoth <= 106 +* 0 <= need1, need2 <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/Solution.java b/src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/Solution.java new file mode 100644 index 000000000..a41c46eb8 --- /dev/null +++ b/src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/Solution.java @@ -0,0 +1,20 @@ +package g3701_3800.s3790_smallest_all_ones_multiple; + +// #Medium #Hash_Table #Math #Staff #Weekly_Contest_482 +// #2026_05_22_Time_8_ms_(100.00%)_Space_42.48_MB_(81.03%) + +public class Solution { + public int minAllOneMultiple(int k) { + if (k % 2 == 0 || k % 5 == 0) { + return -1; + } + int rem = 0; + for (int i = 1; i <= k; i++) { + rem = (rem * 10 + 1) % k; + if (rem == 0) { + return i; + } + } + return -1; + } +} diff --git a/src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/readme.md b/src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/readme.md new file mode 100644 index 000000000..820508e36 --- /dev/null +++ b/src/main/java/g3701_3800/s3790_smallest_all_ones_multiple/readme.md @@ -0,0 +1,43 @@ +3790\. Smallest All-Ones Multiple + +Medium + +You are given a positive integer `k`. + +Find the **smallest** integer `n` divisible by `k` that consists of **only the digit 1** in its decimal representation (e.g., 1, 11, 111, ...). + +Return an integer denoting the **number of digits** in the decimal representation of `n`. If no such `n` exists, return `-1`. + +**Example 1:** + +**Input:** k = 3 + +**Output:** 3 + +**Explanation:** + +`n = 111` because 111 is divisible by 3, but 1 and 11 are not. The length of `n = 111` is 3. + +**Example 2:** + +**Input:** k = 7 + +**Output:** 6 + +**Explanation:** + +`n = 111111`. The length of `n = 111111` is 6. + +**Example 3:** + +**Input:** k = 2 + +**Output:** \-1 + +**Explanation:** + +There does not exist a valid `n` that is a multiple of 2. + +**Constraints:** + +* 2 <= k <= 105 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/Solution.java b/src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/Solution.java new file mode 100644 index 000000000..e2fd758e4 --- /dev/null +++ b/src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/Solution.java @@ -0,0 +1,49 @@ +package g3701_3800.s3791_number_of_balanced_integers_in_a_range; + +// #Hard #Dynamic_Programming #Principal #Weekly_Contest_482 +// #2026_05_22_Time_75_ms_(83.12%)_Space_46.63_MB_(70.13%) + +import java.util.Arrays; + +public class Solution { + private long solve(String number, int idx, int diff, int tight, long[][][] dp) { + if (idx == number.length()) { + return diff == 0 ? 1 : 0; + } + if (dp[idx][diff + dp[0].length / 2][tight] != -1) { + return dp[idx][diff + dp[0].length / 2][tight]; + } + long ans = 0; + int ub = tight == 1 ? number.charAt(idx) - '0' : 9; + for (int i = 0; i <= ub; i++) { + int newTight = (tight == 1 && i == ub) ? 1 : 0; + if (idx % 2 == 0) { + ans += solve(number, idx + 1, diff - i, newTight, dp); + } else { + ans += solve(number, idx + 1, diff + i, newTight, dp); + } + } + dp[idx][diff + dp[0].length / 2][tight] = ans; + return dp[idx][diff + dp[0].length / 2][tight]; + } + + private long solve(long num) { + if (num == 0) { + return 1; + } + String number = Long.toString(num); + int len = number.length(); + long[][][] dp = + len % 2 == 1 ? new long[len][(len + 1) * 9 + 1][2] : new long[len][len * 9 + 1][2]; + for (long[][] tbl : dp) { + for (long[] row : tbl) { + Arrays.fill(row, -1); + } + } + return solve(number, 0, 0, 1, dp); + } + + public long countBalanced(long low, long high) { + return solve(high) - solve(low - 1); + } +} diff --git a/src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/readme.md b/src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/readme.md new file mode 100644 index 000000000..1ec67fa8e --- /dev/null +++ b/src/main/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/readme.md @@ -0,0 +1,46 @@ +3791\. Number of Balanced Integers in a Range + +Hard + +You are given two integers `low` and `high`. + +An integer is called **balanced** if it satisfies **both** of the following conditions: + +* It contains **at least** two digits. +* The **sum of digits at even positions** is equal to the **sum of digits at odd positions** (the leftmost digit has position 1). + +Return an integer representing the number of balanced integers in the range `[low, high]` (both inclusive). + +**Example 1:** + +**Input:** low = 1, high = 100 + +**Output:** 9 + +**Explanation:** + +The 9 balanced numbers between 1 and 100 are 11, 22, 33, 44, 55, 66, 77, 88, and 99. + +**Example 2:** + +**Input:** low = 120, high = 129 + +**Output:** 1 + +**Explanation:** + +Only 121 is balanced because the sum of digits at even and odd positions are both 2. + +**Example 3:** + +**Input:** low = 1234, high = 1234 + +**Output:** 0 + +**Explanation:** + +1234 is not balanced because the sum of digits at odd positions `(1 + 3 = 4)` does not equal the sum at even positions `(2 + 4 = 6)`. + +**Constraints:** + +* 1 <= low <= high <= 1015 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/readme.md b/src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/readme.md new file mode 100644 index 000000000..87b54026a --- /dev/null +++ b/src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/readme.md @@ -0,0 +1,76 @@ +3793\. Find Users with High Token Usage + +Easy + +Table: prompts + + +-------------+---------+ + | Column Name | Type | + +-------------+---------+ + | user_id | int | + | prompt | varchar | + | tokens | int | + +-------------+---------+ + +(user_id, prompt) is the primary key (unique value) for this table. +Each row represents a prompt submitted by a user to an AI system along with the number of tokens consumed. + +Write a solution to analyze AI prompt usage patterns based on the following requirements: + +* For each user, calculate the total number of prompts they have submitted. +* For each user, calculate the average tokens used per prompt (Rounded to 2 decimal places). +* Only include users who have submitted at least 3 prompts. +* Only include users who have submitted at least one prompt with tokens greater than their own average token usage. + +Return the result table ordered by average tokens in descending order, and then by user_id in ascending order. + +The result format is in the following example. + +Example: + +Input: + +prompts table: + + +---------+--------------------------+--------+ + | user_id | prompt | tokens | + +---------+--------------------------+--------+ + | 1 | Write a blog outline | 120 | + | 1 | Generate SQL query | 80 | + | 1 | Summarize an article | 200 | + | 2 | Create resume bullet | 60 | + | 2 | Improve LinkedIn bio | 70 | + | 3 | Explain neural networks | 300 | + | 3 | Generate interview Q&A | 250 | + | 3 | Write cover letter | 180 | + | 3 | Optimize Python code | 220 | + +---------+--------------------------+--------+ + +Output: + + +---------+--------------+------------+ + | user_id | prompt_count | avg_tokens | + +---------+--------------+------------+ + | 3 | 4 | 237.50 | + | 1 | 3 | 133.33 | + +---------+--------------+------------+ + +Explanation: + +* User 1: + * Total prompts = 3 + * Average tokens = (120 + 80 + 200) / 3 = 133.33 + * Has a prompt with 200 tokens, which is greater than the average + * Included in the result + +* User 2: + * Total prompts = 2 (less than the required minimum) + * Excluded from the result + +* User 3: + * Total prompts = 4 + * Average tokens = (300 + 250 + 180 + 220) / 4 = 237.50 + * Has prompts with 300 and 250 tokens, both greater than the average + * Included in the result + +The result table is ordered by avg_tokens in descending order, then by user_id in ascending order. diff --git a/src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/script.sql b/src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/script.sql new file mode 100644 index 000000000..5ec8d02e9 --- /dev/null +++ b/src/main/java/g3701_3800/s3793_find_users_with_high_token_usage/script.sql @@ -0,0 +1,7 @@ +# Write your MySQL query statement below +# #Easy #2026_05_22_Time_286_ms_(70.33%)_Space_0.0_MB_(100.00%) +SELECT user_id, COUNT(prompt) as prompt_count, ROUND(AVG(tokens),2) as avg_tokens +FROM prompts +GROUP BY user_id +HAVING prompt_count > 2 AND MAX(tokens) > avg_tokens +ORDER BY avg_tokens DESC, user_id asc; diff --git a/src/main/java/g3701_3800/s3794_reverse_string_prefix/Solution.java b/src/main/java/g3701_3800/s3794_reverse_string_prefix/Solution.java new file mode 100644 index 000000000..9b03a966c --- /dev/null +++ b/src/main/java/g3701_3800/s3794_reverse_string_prefix/Solution.java @@ -0,0 +1,16 @@ +package g3701_3800.s3794_reverse_string_prefix; + +// #Easy #String #Two_Pointers #Mid_Level #Biweekly_Contest_173 +// #2026_05_22_Time_1_ms_(100.00%)_Space_44.69_MB_(49.90%) + +public class Solution { + public String reversePrefix(String s, int k) { + char[] arr = s.toCharArray(); + for (int i = 0; i < k / 2; i++) { + char temp = arr[i]; + arr[i] = arr[k - 1 - i]; + arr[k - 1 - i] = temp; + } + return new String(arr); + } +} diff --git a/src/main/java/g3701_3800/s3794_reverse_string_prefix/readme.md b/src/main/java/g3701_3800/s3794_reverse_string_prefix/readme.md new file mode 100644 index 000000000..61cea26bd --- /dev/null +++ b/src/main/java/g3701_3800/s3794_reverse_string_prefix/readme.md @@ -0,0 +1,43 @@ +3794\. Reverse String Prefix + +Easy + +You are given a string `s` and an integer `k`. + +Reverse the first `k` characters of `s` and return the resulting string. + +**Example 1:** + +**Input:** s = "abcd", k = 2 + +**Output:** "bacd" + +**Explanation:** + +The first `k = 2` characters `"ab"` are reversed to `"ba"`. The final resulting string is `"bacd"`. + +**Example 2:** + +**Input:** s = "xyz", k = 3 + +**Output:** "zyx" + +**Explanation:** + +The first `k = 3` characters `"xyz"` are reversed to `"zyx"`. The final resulting string is `"zyx"`. + +**Example 3:** + +**Input:** s = "hey", k = 1 + +**Output:** "hey" + +**Explanation:** + +The first `k = 1` character `"h"` remains unchanged on reversal. The final resulting string is `"hey"`. + +**Constraints:** + +* `1 <= s.length <= 100` +* `s` consists of lowercase English letters. +* `1 <= k <= s.length` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/Solution.java b/src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/Solution.java new file mode 100644 index 000000000..82b64f2a8 --- /dev/null +++ b/src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/Solution.java @@ -0,0 +1,43 @@ +package g3701_3800.s3795_minimum_subarray_length_with_distinct_sum_at_least_k; + +// #Medium #Array #Hash_Table #Sliding_Window #Senior #Biweekly_Contest_173 +// #2026_05_22_Time_88_ms_(85.14%)_Space_207.14_MB_(6.02%) + +import java.util.HashMap; +import java.util.Map; + +public class Solution { + public int minLength(int[] nums, int k) { + for (int i : nums) { + if (i >= k) { + return 1; + } + } + int ans = Integer.MAX_VALUE; + int alt = -1; + int i = 0; + int j = 1; + int sum = nums[0]; + if (sum >= k) { + return 1; + } + Map hm = new HashMap<>(); + hm.put(nums[0], 1); + while (i < nums.length && j < nums.length) { + hm.put(nums[j], hm.getOrDefault(nums[j], 0) + 1); + if (hm.get(nums[j]) == 1) { + sum += nums[j]; + } + while (sum >= k) { + ans = Math.min(ans, j - i + 1); + hm.put(nums[i], hm.get(nums[i]) - 1); + if (hm.get(nums[i]) == 0) { + sum -= nums[i]; + } + i++; + } + j++; + } + return (ans != Integer.MAX_VALUE) ? ans : alt; + } +} diff --git a/src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/readme.md b/src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/readme.md new file mode 100644 index 000000000..039f74fa5 --- /dev/null +++ b/src/main/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/readme.md @@ -0,0 +1,43 @@ +3795\. Minimum Subarray Length With Distinct Sum At Least K + +Medium + +You are given an integer array `nums` and an integer `k`. + +Return the **minimum** length of a **non-empty subarrays** whose sum of the **distinct** values present in that subarray (each value counted once) is **at least** `k`. If no such subarray exists, return -1. + +**Example 1:** + +**Input:** nums = [2,2,3,1], k = 4 + +**Output:** 2 + +**Explanation:** + +The subarray `[2, 3]` has distinct elements `{2, 3}` whose sum is `2 + 3 = 5`, which is at least `k = 4`. Thus, the answer is 2. + +**Example 2:** + +**Input:** nums = [3,2,3,4], k = 5 + +**Output:** 2 + +**Explanation:** + +The subarray `[3, 2]` has distinct elements `{3, 2}` whose sum is `3 + 2 = 5`, which is at least `k = 5`. Thus, the answer is 2. + +**Example 3:** + +**Input:** nums = [5,5,4], k = 5 + +**Output:** 1 + +**Explanation:** + +The subarray `[5]` has distinct elements `{5}` whose sum is `5`, which is at least `k = 5`. Thus, the answer is 1. + +**Constraints:** + +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 105 +* 1 <= k <= 109 \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/Solution.java b/src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/Solution.java new file mode 100644 index 000000000..cc24214bd --- /dev/null +++ b/src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/Solution.java @@ -0,0 +1,28 @@ +package g3701_3800.s3796_find_maximum_value_in_a_constrained_sequence; + +// #Medium #Array #Greedy #Staff #Biweekly_Contest_173 +// #2026_05_22_Time_6_ms_(98.18%)_Space_208.10_MB_(32.73%) + +public class Solution { + public int findMaxVal(int n, int[][] restrictions, int[] diff) { + int[] a = new int[n]; + a[0] = 0; + for (int i = 1; i < n; i++) { + a[i] = Integer.MAX_VALUE; + } + for (int[] r : restrictions) { + a[r[0]] = Math.min(a[r[0]], r[1]); + } + for (int i = 1; i < n; i++) { + a[i] = Math.min(a[i], a[i - 1] + diff[i - 1]); + } + for (int i = n - 2; i >= 0; i--) { + a[i] = Math.min(a[i], a[i + 1] + diff[i]); + } + int maxi = 0; + for (int i : a) { + maxi = Math.max(maxi, i); + } + return maxi; + } +} diff --git a/src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/readme.md b/src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/readme.md new file mode 100644 index 000000000..151f6554f --- /dev/null +++ b/src/main/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/readme.md @@ -0,0 +1,48 @@ +3796\. Find Maximum Value in a Constrained Sequence + +Medium + +You are given an integer `n`, a 2D integer array `restrictions`, and an integer array `diff` of length `n - 1`. Your task is to construct a sequence of length `n`, denoted by `a[0], a[1], ..., a[n - 1]`, such that it satisfies the following conditions: + +* `a[0]` is 0. +* All elements in the sequence are **non-negative**. +* For every index `i` (`0 <= i <= n - 2`), `abs(a[i] - a[i + 1]) <= diff[i]`. +* For each `restrictions[i] = [idx, maxVal]`, the value at position `idx` in the sequence must not exceed `maxVal` (i.e., `a[idx] <= maxVal`). + +Your goal is to construct a valid sequence that **maximizes** the **largest** value within the sequence while satisfying all the above conditions. + +Return an integer denoting the **largest** value present in such an optimal sequence. + +**Example 1:** + +**Input:** n = 10, restrictions = [[3,1],[8,1]], diff = [2,2,3,1,4,5,1,1,2] + +**Output:** 6 + +**Explanation:** + +* The sequence `a = [0, 2, 4, 1, 2, 6, 2, 1, 1, 3]` satisfies the given constraints (`a[3] <= 1` and `a[8] <= 1`). +* The maximum value in the sequence is 6. + +**Example 2:** + +**Input:** n = 8, restrictions = [[3,2]], diff = [3,5,2,4,2,3,1] + +**Output:** 12 + +**Explanation:** + +* The sequence `a = [0, 3, 3, 2, 6, 8, 11, 12]` satisfies the given constraints (`a[3] <= 2`). +* The maximum value in the sequence is 12. + +**Constraints:** + +* 2 <= n <= 105 +* `1 <= restrictions.length <= n - 1` +* `restrictions[i].length == 2` +* `restrictions[i] = [idx, maxVal]` +* `1 <= idx < n` +* 1 <= maxVal <= 106 +* `diff.length == n - 1` +* `1 <= diff[i] <= 10` +* The values of `restrictions[i][0]` are unique. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/Solution.java b/src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/Solution.java new file mode 100644 index 000000000..d88da09bb --- /dev/null +++ b/src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/Solution.java @@ -0,0 +1,55 @@ +package g3701_3800.s3797_count_routes_to_climb_a_rectangular_grid; + +// #Hard #Array #Dynamic_Programming #Matrix #Prefix_Sum #Senior_Staff #Biweekly_Contest_173 +// #2026_05_22_Time_89_ms_(89.19%)_Space_57.00_MB_(81.08%) + +import java.util.Arrays; + +public class Solution { + public int numberOfRoutes(String[] grid, int d) { + int n = grid.length; + int m = grid[0].length(); + long mod = 1_000_000_007; + long[] dp = null; + for (int i = n - 1; i >= 0; i--) { + String r = grid[i]; + if (dp == null) { + long[] init = new long[m]; + Arrays.fill(init, 1); + dp = f(init, 0, r, m, mod); + } else { + int d2 = (int) Math.sqrt((double) d * d - 1); + dp = f(dp, d2, r, m, mod); + } + dp = f(dp, d, r, m, mod); + } + long res = 0; + for (long v : dp) { + res = (res + v) % mod; + } + return (int) (res); + } + + private long[] f(long[] dp, int dist, String r, int m, long mod) { + long[] dp2 = new long[m]; + long window = 0; + for (int k = 0; k <= Math.min(m - 1, dist); k++) { + window += dp[k]; + } + dp2[0] = window; + for (int j = 1; j < m; j++) { + window = dp2[j - 1]; + if (j - dist - 1 >= 0) { + window -= dp[j - dist - 1]; + } + if (j + dist < m) { + window += dp[j + dist]; + } + dp2[j] = window; + } + for (int j = 0; j < m; j++) { + dp2[j] = (r.charAt(j) == '#') ? 0 : dp2[j] % mod; + } + return dp2; + } +} diff --git a/src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/readme.md b/src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/readme.md new file mode 100644 index 000000000..797a3ba3c --- /dev/null +++ b/src/main/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/readme.md @@ -0,0 +1,88 @@ +3797\. Count Routes to Climb a Rectangular Grid + +Hard + +You are given a string array `grid` of size `n`, where each string `grid[i]` has length `m`. The character `grid[i][j]` is one of the following symbols: + +* `'.'`: The cell is available. +* `'#'`: The cell is blocked. + +You want to count the number of different routes to climb `grid`. Each route must start from _any cell_ in the bottom row (row `n - 1`) and end in the top row (row 0). + +However, there are some constraints on the route. + +* You can only move from one available cell to **another** available cell. +* The **Euclidean distance** of each move is **at most** `d`, where `d` is an integer parameter given to you. The Euclidean distance between two cells `(r1, c1)`, `(r2, c2)` is sqrt((r1 - r2)2 + (c1 - c2)2). +* Each move either stays on the same row or moves to the row directly above (from row `r` to `r - 1`). +* You cannot stay on the same row for two consecutive turns. If you stay on the same row in a move (and this move is not the last move), your next move must go to the row above. + +Return an integer denoting the number of such routes. Since the answer may be very large, return it **modulo** 109 + 7. + +**Example 1:** + +**Input:** grid = ["..","#."], d = 1 + +**Output:** 2 + +**Explanation:** + +We label the cells we visit in the routes sequentially, starting from 1. The two routes are: + +.2 #1 + +32 #1 + +We can move from the cell (1, 1) to the cell (0, 1) because the Euclidean distance is sqrt((1 - 0)2 + (1 - 1)2) = sqrt(1) <= d. + +However, we cannot move from the cell (1, 1) to the cell (0, 0) because the Euclidean distance is sqrt((1 - 0)2 + (1 - 0)2) = sqrt(2) > d. + +**Example 2:** + +**Input:** grid = ["..","#."], d = 2 + +**Output:** 4 + +**Explanation:** + +Two of the routes are given in example 1. The other two routes are: + +2\. #1 + +23 #1 + +Note that we can move from (1, 1) to (0, 0) because the Euclidean distance is `sqrt(2) <= d`. + +**Example 3:** + +**Input:** grid = ["#"], d = 750 + +**Output:** 0 + +**Explanation:** + +We cannot choose any cell as the starting cell. Therefore, there are no routes. + +**Example 4:** + +**Input:** grid = [".."], d = 1 + +**Output:** 4 + +**Explanation:** + +The possible routes are: + +.1 + +1\. + +12 + +21 + +**Constraints:** + +* `1 <= n == grid.length <= 750` +* `1 <= m == grid[i].length <= 750` +* `grid[i][j]` is `'.'` or `'#'`. +* `1 <= d <= 750` \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3798_largest_even_number/Solution.java b/src/main/java/g3701_3800/s3798_largest_even_number/Solution.java new file mode 100644 index 000000000..bcf702a14 --- /dev/null +++ b/src/main/java/g3701_3800/s3798_largest_even_number/Solution.java @@ -0,0 +1,16 @@ +package g3701_3800.s3798_largest_even_number; + +// #Easy #String #Mid_Level #Weekly_Contest_483 +// #2026_05_22_Time_0_ms_(100.00%)_Space_43.67_MB_(94.28%) + +public class Solution { + public String largestEven(String s) { + int i; + for (i = s.length() - 1; i >= 0; i--) { + if (s.charAt(i) == '2') { + break; + } + } + return s.substring(0, i + 1); + } +} diff --git a/src/main/java/g3701_3800/s3798_largest_even_number/readme.md b/src/main/java/g3701_3800/s3798_largest_even_number/readme.md new file mode 100644 index 000000000..a2f771819 --- /dev/null +++ b/src/main/java/g3701_3800/s3798_largest_even_number/readme.md @@ -0,0 +1,44 @@ +3798\. Largest Even Number + +Easy + +You are given a string `s` consisting only of the characters `'1'` and `'2'`. + +You may delete any number of characters from `s` without changing the order of the remaining characters. + +Return the **largest possible resultant string** that represents an **even** integer. If there is no such string, return the empty string `""`. + +**Example 1:** + +**Input:** s = "1112" + +**Output:** "1112" + +**Explanation:** + +The string already represents the largest possible even number, so no deletions are needed. + +**Example 2:** + +**Input:** s = "221" + +**Output:** "22" + +**Explanation:** + +Deleting `'1'` results in the largest possible even number which is equal to 22. + +**Example 3:** + +**Input:** s = "1" + +**Output:** "" + +**Explanation:** + +There is no way to get an even number. + +**Constraints:** + +* `1 <= s.length <= 100` +* `s` consists only of the characters `'1'` and `'2'`. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3799_word_squares_ii/Solution.java b/src/main/java/g3701_3800/s3799_word_squares_ii/Solution.java new file mode 100644 index 000000000..24d394a14 --- /dev/null +++ b/src/main/java/g3701_3800/s3799_word_squares_ii/Solution.java @@ -0,0 +1,37 @@ +package g3701_3800.s3799_word_squares_ii; + +// #Medium #Array #String #Sorting #Backtracking #Enumeration #Senior #Weekly_Contest_483 +// #2026_05_22_Time_5_ms_(99.15%)_Space_56.77_MB_(55.56%) + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Solution { + public List> wordSquares(String[] words) { + String[] s = words.clone(); + Arrays.sort(s); + List> result = new ArrayList<>(); + int n = s.length; + for (int a = 0; a < n; a++) { + for (int b = 0; b < n; b++) { + if (a != b && s[a].charAt(0) == s[b].charAt(0)) { + for (int c = 0; c < n; c++) { + if (c != a && c != b && s[a].charAt(3) == s[c].charAt(0)) { + for (int d = 0; d < n; d++) { + if (d != a + && d != b + && d != c + && s[d].charAt(0) == s[b].charAt(3) + && s[d].charAt(3) == s[c].charAt(3)) { + result.add(Arrays.asList(s[a], s[b], s[c], s[d])); + } + } + } + } + } + } + } + return result; + } +} diff --git a/src/main/java/g3701_3800/s3799_word_squares_ii/readme.md b/src/main/java/g3701_3800/s3799_word_squares_ii/readme.md new file mode 100644 index 000000000..2878f9ea0 --- /dev/null +++ b/src/main/java/g3701_3800/s3799_word_squares_ii/readme.md @@ -0,0 +1,56 @@ +3799\. Word Squares II + +Medium + +You are given a string array `words`, consisting of **distinct** 4-letter strings, each containing lowercase English letters. + +A **word square** consists of 4 **distinct** words: `top`, `left`, `right` and `bottom`, arranged as follows: + +* `top` forms the **top row**. +* `bottom` forms the **bottom row**. +* `left` forms the **left column** (top to bottom). +* `right` forms the **right column** (top to bottom). + +It must satisfy: + +* `top[0] == left[0]`, `top[3] == right[0]` +* `bottom[0] == left[3]`, `bottom[3] == right[3]` + +Return all valid **distinct** word squares, sorted in **ascending lexicographic** order by the 4-tuple `(top, left, right, bottom)`. + +**Example 1:** + +**Input:** words = ["able","area","echo","also"] + +**Output:** [["able","area","echo","also"],["area","able","also","echo"]] + +**Explanation:** + +There are exactly two valid 4-word squares that satisfy all corner constraints: + +* `"able"` (top), `"area"` (left), `"echo"` (right), `"also"` (bottom) + * `top[0] == left[0] == 'a'` + * `top[3] == right[0] == 'e'` + * `bottom[0] == left[3] == 'a'` + * `bottom[3] == right[3] == 'o'` +* `"area"` (top), `"able"` (left), `"also"` (right), `"echo"` (bottom) + * All corner constraints are satisfied. + +Thus, the answer is `[["able","area","echo","also"],["area","able","also","echo"]]`. + +**Example 2:** + +**Input:** words = ["code","cafe","eden","edge"] + +**Output:** [] + +**Explanation:** + +No combination of four words satisfies all four corner constraints. Thus, the answer is empty array `[]`. + +**Constraints:** + +* `4 <= words.length <= 15` +* `words[i].length == 4` +* `words[i]` consists of only lowercase English letters. +* All `words[i]` are **distinct**. \ No newline at end of file diff --git a/src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/Solution.java b/src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/Solution.java new file mode 100644 index 000000000..850d504f4 --- /dev/null +++ b/src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/Solution.java @@ -0,0 +1,39 @@ +package g3701_3800.s3800_minimum_cost_to_make_two_binary_strings_equal; + +// #Medium #String #Greedy #Staff #Weekly_Contest_483 +// #2026_05_22_Time_8_ms_(85.71%)_Space_47.61_MB_(85.71%) + +public class Solution { + public long minimumCost(String s, String t, int flipCost, int swapCost, int crossCost) { + int len = t.length(); + int diff = 0; + int one = 0; + int zero = 0; + char[] arr1 = s.toCharArray(); + char[] arr2 = t.toCharArray(); + for (int i = 0; i < len; i++) { + if (arr1[i] != arr2[i]) { + diff++; + if (arr1[i] == '0') { + zero++; + } else { + one++; + } + } + } + int min = Math.min(one, zero); + long ans = 0; + long costOfFlip = ((long) min * flipCost) * 2; + long costOfSwap = ((long) min * swapCost); + ans += Math.min(costOfFlip, costOfSwap); + diff -= (min * 2); + int oddLeft = diff % 2; + int evenLeft = diff - oddLeft; + long costOfCrossSwap = + (((long) (evenLeft / 2) * crossCost) + ((long) (evenLeft / 2) * swapCost)); + long costOfFlipMain = ((long) evenLeft * flipCost); + ans += Math.min(costOfCrossSwap, costOfFlipMain); + ans += (long) oddLeft * flipCost; + return ans; + } +} diff --git a/src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/readme.md b/src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/readme.md new file mode 100644 index 000000000..72889f339 --- /dev/null +++ b/src/main/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/readme.md @@ -0,0 +1,57 @@ +3800\. Minimum Cost to Make Two Binary Strings Equal + +Medium + +You are given two binary strings `s` and `t`, both of length `n`, and three **positive** integers `flipCost`, `swapCost`, and `crossCost`. + +You are allowed to apply the following operations any number of times (in any order) to the strings `s` and `t`: + +* Choose any index `i` and flip `s[i]` or `t[i]` (change `'0'` to `'1'` or `'1'` to `'0'`). The cost of this operation is `flipCost`. +* Choose two **distinct** indices `i` and `j`, and swap either `s[i]` and `s[j]` or `t[i]` and `t[j]`. The cost of this operation is `swapCost`. +* Choose an index `i` and swap `s[i]` with `t[i]`. The cost of this operation is `crossCost`. + +Return an integer denoting the **minimum** total cost needed to make the strings `s` and `t` equal. + +**Example 1:** + +**Input:** s = "01000", t = "10111", flipCost = 10, swapCost = 2, crossCost = 2 + +**Output:** 16 + +**Explanation:** + +We can perform the following operations: + +* Swap `s[0]` and `s[1]` (`swapCost = 2`). After this operation, `s = "10000"` and `t = "10111"`. +* Cross swap `s[2]` and `t[2]` (`crossCost = 2`). After this operation, `s = "10100"` and `t = "10011"`. +* Swap `s[2]` and `s[3]` (`swapCost = 2`). After this operation, `s = "10010"` and `t = "10011"`. +* Flip `s[4]` (`flipCost = 10`). After this operation, `s = t = "10011"`. + +The total cost is `2 + 2 + 2 + 10 = 16`. + +**Example 2:** + +**Input:** s = "001", t = "110", flipCost = 2, swapCost = 100, crossCost = 100 + +**Output:** 6 + +**Explanation:** + +Flipping all the bits of `s` makes the strings equal, and the total cost is `3 * flipCost = 3 * 2 = 6`. + +**Example 3:** + +**Input:** s = "1010", t = "1010", flipCost = 5, swapCost = 5, crossCost = 5 + +**Output:** 0 + +**Explanation:** + +The strings are already equal, so no operations are required. + +**Constraints:** + +* `n == s.length == t.length` +* 1 <= n <= 105 +* 1 <= flipCost, swapCost, crossCost <= 109 +* `s` and `t` consist only of the characters `'0'` and `'1'`. \ No newline at end of file diff --git a/src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/Solution.java b/src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/Solution.java new file mode 100644 index 000000000..878412814 --- /dev/null +++ b/src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/Solution.java @@ -0,0 +1,114 @@ +package g3801_3900.s3801_minimum_cost_to_merge_sorted_lists; + +// #Hard #Array #Dynamic_Programming #Binary_Search #Two_Pointers #Bit_Manipulation #Senior_Staff +// #Weekly_Contest_483 #2026_05_22_Time_251_ms_(89.19%)_Space_47.69_MB_(83.78%) + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class Solution { + private int numLt(int[][] lists, int enabled, int guess) { + int result = 0; + for (int i = 0; i < lists.length; i++) { + if (((enabled >> i) & 1) == 1) { + int[] list = lists[i]; + int low = 0; + int high = list.length; + while (low < high) { + int mid = (low + high) / 2; + if (list[mid] < guess) { + low = mid + 1; + } else { + high = mid; + } + } + result += low; + } + } + return result; + } + + public long minMergeCost(int[][] lists) { + int n = lists.length; + List allNums = getSortedNumbers(lists); + long[][] subsets = buildSubsetInfo(lists, allNums); + long[] dp = new long[1 << n]; + Arrays.fill(dp, Long.MAX_VALUE); + for (int subset = 0; subset < (1 << n); subset++) { + if (Integer.bitCount(subset) <= 1) { + dp[subset] = 0; + continue; + } + dp[subset] = calculateMinCost(subset, subsets, dp); + } + return dp[(1 << n) - 1]; + } + + private List getSortedNumbers(int[][] lists) { + List allNums = new ArrayList<>(); + for (int[] lst : lists) { + for (int num : lst) { + allNums.add(num); + } + } + Collections.sort(allNums); + return allNums; + } + + private long[][] buildSubsetInfo(int[][] lists, List allNums) { + int n = lists.length; + long[][] subsets = new long[1 << n][2]; + for (int subset = 1; subset < (1 << n); subset++) { + int resultLen = getSubsetLength(lists, subset); + int medianLt = (resultLen - 1) / 2; + subsets[subset][0] = resultLen; + subsets[subset][1] = findMedian(lists, subset, medianLt, allNums); + } + return subsets; + } + + private int getSubsetLength(int[][] lists, int subset) { + int resultLen = 0; + for (int i = 0; i < lists.length; i++) { + if (((subset >> i) & 1) == 1) { + resultLen += lists[i].length; + } + } + return resultLen; + } + + private int findMedian(int[][] lists, int subset, int medianLt, List allNums) { + int low = 0; + int high = allNums.size() - 1; + int actualMedian = -1; + while (low <= high) { + int mid = (low + high) / 2; + int num = allNums.get(mid); + if (numLt(lists, subset, num) <= medianLt) { + actualMedian = num; + low = mid + 1; + } else { + high = mid - 1; + } + } + return actualMedian; + } + + private long calculateMinCost(int subset, long[][] subsets, long[] dp) { + long minCost = Long.MAX_VALUE; + int a = (subset - 1) & subset; + while (a > 0) { + int b = subset ^ a; + long aLen = subsets[a][0]; + long aMedian = subsets[a][1]; + long bLen = subsets[b][0]; + long bMedian = subsets[b][1]; + long cost = aLen + bLen + Math.abs(aMedian - bMedian); + minCost = Math.min(minCost, dp[a] + dp[b] + cost); + a = (a - 1) & subset; + } + return minCost; + } +} diff --git a/src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/readme.md b/src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/readme.md new file mode 100644 index 000000000..bd58c4656 --- /dev/null +++ b/src/main/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/readme.md @@ -0,0 +1,89 @@ +3801\. Minimum Cost to Merge Sorted Lists + +Hard + +You are given a 2D integer array `lists`, where each `lists[i]` is a non-empty array of integers **sorted** in **non-decreasing** order. + +You may **repeatedly** choose two lists `a = lists[i]` and `b = lists[j]`, where `i != j`, and merge them. The **cost** to merge `a` and `b` is: + +`len(a) + len(b) + abs(median(a) - median(b))`, where `len` and `median` denote the list length and median, respectively. + +After merging `a` and `b`, remove both `a` and `b` from `lists` and insert the new merged **sorted list** in **any** position. Repeat merges until only **one** list remains. + +Return an integer denoting the **minimum total cost** required to merge all lists into one single sorted list. + +The **median** of an array is the middle element after sorting it in non-decreasing order. If the array has an even number of elements, the median is the left middle element. + +**Example 1:** + +**Input:** lists = [[1,3,5],[2,4],[6,7,8]] + +**Output:** 18 + +**Explanation:** + +Merge `a = [1, 3, 5]` and `b = [2, 4]`: + +* `len(a) = 3` and `len(b) = 2` +* `median(a) = 3` and `median(b) = 2` +* `cost = len(a) + len(b) + abs(median(a) - median(b)) = 3 + 2 + abs(3 - 2) = 6` + +So `lists` becomes `[[1, 2, 3, 4, 5], [6, 7, 8]]`. + +Merge `a = [1, 2, 3, 4, 5]` and `b = [6, 7, 8]`: + +* `len(a) = 5` and `len(b) = 3` +* `median(a) = 3` and `median(b) = 7` +* `cost = len(a) + len(b) + abs(median(a) - median(b)) = 5 + 3 + abs(3 - 7) = 12` + +So `lists` becomes `[[1, 2, 3, 4, 5, 6, 7, 8]]`, and total cost is `6 + 12 = 18`. + +**Example 2:** + +**Input:** lists = [[1,1,5],[1,4,7,8]] + +**Output:** 10 + +**Explanation:** + +Merge `a = [1, 1, 5]` and `b = [1, 4, 7, 8]`: + +* `len(a) = 3` and `len(b) = 4` +* `median(a) = 1` and `median(b) = 4` +* `cost = len(a) + len(b) + abs(median(a) - median(b)) = 3 + 4 + abs(1 - 4) = 10` + +So `lists` becomes `[[1, 1, 1, 4, 5, 7, 8]]`, and total cost is 10. + +**Example 3:** + +**Input:** lists = [[1],[3]] + +**Output:** 4 + +**Explanation:** + +Merge `a = [1]` and `b = [3]`: + +* `len(a) = 1` and `len(b) = 1` +* `median(a) = 1` and `median(b) = 3` +* `cost = len(a) + len(b) + abs(median(a) - median(b)) = 1 + 1 + abs(1 - 3) = 4` + +So `lists` becomes `[[1, 3]]`, and total cost is 4. + +**Example 4:** + +**Input:** lists = [[1],[1]] + +**Output:** 2 + +**Explanation:** + +The total cost is `len(a) + len(b) + abs(median(a) - median(b)) = 1 + 1 + abs(1 - 1) = 2`. + +**Constraints:** + +* `2 <= lists.length <= 12` +* `1 <= lists[i].length <= 500` +* -109 <= lists[i][j] <= 109 +* `lists[i]` is sorted in non-decreasing order. +* The **sum** of `lists[i].length` will not exceed 2000. \ No newline at end of file diff --git a/src/main/java/g3801_3900/s3803_count_residue_prefixes/Solution.java b/src/main/java/g3801_3900/s3803_count_residue_prefixes/Solution.java new file mode 100644 index 000000000..5525fa092 --- /dev/null +++ b/src/main/java/g3801_3900/s3803_count_residue_prefixes/Solution.java @@ -0,0 +1,28 @@ +package g3801_3900.s3803_count_residue_prefixes; + +// #Easy #String #Hash_Table #Mid_Level #Weekly_Contest_484 +// #2026_05_22_Time_1_ms_(100.00%)_Space_43.67_MB_(91.69%) + +public class Solution { + public int residuePrefixes(String s) { + int n = s.length(); + int count = 0; + int p = 0; + char c1 = s.charAt(p); + while (p < n && c1 == s.charAt(p)) { + if (++p % 3 == 1) { + count++; + } + } + if (p >= n) { + return count; + } + char c2 = s.charAt(p); + while (p < n && (c1 == s.charAt(p) || c2 == s.charAt(p))) { + if (++p % 3 == 2) { + count++; + } + } + return count; + } +} diff --git a/src/main/java/g3801_3900/s3803_count_residue_prefixes/readme.md b/src/main/java/g3801_3900/s3803_count_residue_prefixes/readme.md new file mode 100644 index 000000000..2006a7b3f --- /dev/null +++ b/src/main/java/g3801_3900/s3803_count_residue_prefixes/readme.md @@ -0,0 +1,50 @@ +3803\. Count Residue Prefixes + +Easy + +You are given a string `s` consisting only of lowercase English letters. + +A **prefix** of `s` is called a **residue** if the number of **distinct characters** in the **prefix** is equal to `len(prefix) % 3`. + +Return the count of **residue** prefixes in `s`. + +A **prefix** of a string is a **non-empty substring** that starts from the beginning of the string and extends to any point within it. + +**Example 1:** + +**Input:** s = "abc" + +**Output:** 2 + +**Explanation:** + +* Prefix `"a"` has 1 distinct character and length modulo 3 is 1, so it is a residue. +* Prefix `"ab"` has 2 distinct characters and length modulo 3 is 2, so it is a residue. +* Prefix `"abc"` does not satisfy the condition. Thus, the answer is 2. + +**Example 2:** + +**Input:** s = "dd" + +**Output:** 1 + +**Explanation:** + +* Prefix `"d"` has 1 distinct character and length modulo 3 is 1, so it is a residue. +* Prefix `"dd"` has 1 distinct character but length modulo 3 is 2, so it is not a residue. Thus, the answer is 1. + +**Example 3:** + +**Input:** s = "bob" + +**Output:** 2 + +**Explanation:** + +* Prefix `"b"` has 1 distinct character and length modulo 3 is 1, so it is a residue. +* Prefix `"bo"` has 2 distinct characters and length mod 3 is 2, so it is a residue. Thus, the answer is 2. + +**Constraints:** + +* `1 <= s.length <= 100` +* `s` contains only lowercase English letters. \ No newline at end of file diff --git a/src/main/java/g3801_3900/s3804_number_of_centered_subarrays/Solution.java b/src/main/java/g3801_3900/s3804_number_of_centered_subarrays/Solution.java new file mode 100644 index 000000000..fe99dd4ff --- /dev/null +++ b/src/main/java/g3801_3900/s3804_number_of_centered_subarrays/Solution.java @@ -0,0 +1,24 @@ +package g3801_3900.s3804_number_of_centered_subarrays; + +// #Medium #Array #Hash_Table #Enumeration #Senior #Weekly_Contest_484 +// #2026_05_22_Time_84_ms_(80.43%)_Space_47.00_MB_(47.83%) + +import java.util.HashSet; +import java.util.Set; + +public class Solution { + public int centeredSubarrays(int[] nums) { + int n = nums.length; + int result = 0; + for (int i = 0; i < n; i++) { + int subsum = 0; + Set subnums = new HashSet<>(); + for (int j = i; j < n; j++) { + subsum += nums[j]; + subnums.add(nums[j]); + result += subnums.contains(subsum) ? 1 : 0; + } + } + return result; + } +} diff --git a/src/main/java/g3801_3900/s3804_number_of_centered_subarrays/readme.md b/src/main/java/g3801_3900/s3804_number_of_centered_subarrays/readme.md new file mode 100644 index 000000000..dc8af7f74 --- /dev/null +++ b/src/main/java/g3801_3900/s3804_number_of_centered_subarrays/readme.md @@ -0,0 +1,37 @@ +3804\. Number of Centered Subarrays + +Medium + +You are given an integer array `nums`. + +A **non-empty subarrays** of `nums` is called **centered** if the sum of its elements is **equal to at least one** element within that **same subarray**. + +Return the number of **centered subarrays** of `nums`. + +**Example 1:** + +**Input:** nums = [-1,1,0] + +**Output:** 5 + +**Explanation:** + +* All single-element subarrays (`[-1]`, `[1]`, `[0]`) are centered. +* The subarray `[1, 0]` has a sum of 1, which is present in the subarray. +* The subarray `[-1, 1, 0]` has a sum of 0, which is present in the subarray. +* Thus, the answer is 5. + +**Example 2:** + +**Input:** nums = [2,-3] + +**Output:** 2 + +**Explanation:** + +Only single-element subarrays (`[2]`, `[-3]`) are centered. + +**Constraints:** + +* `1 <= nums.length <= 500` +* -105 <= nums[i] <= 105 \ No newline at end of file diff --git a/src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/Solution.java b/src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/Solution.java new file mode 100644 index 000000000..871703c42 --- /dev/null +++ b/src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/Solution.java @@ -0,0 +1,27 @@ +package g3801_3900.s3805_count_caesar_cipher_pairs; + +// #Medium #Array #String #Hash_Table #Math #Counting #Senior #Weekly_Contest_484 +// #2026_05_22_Time_34_ms_(98.75%)_Space_67.70_MB_(82.50%) + +import java.util.HashMap; +import java.util.Map; + +public class Solution { + public long countPairs(String[] words) { + String[] a = words; + Map b = new HashMap<>(); + long c = 0; + for (String d : a) { + char[] e = d.toCharArray(); + int f = e[0]; + for (int g = 0; g < e.length; g++) { + e[g] = (char) ((e[g] - f + 26) % 26); + } + String h = new String(e); + int i = b.getOrDefault(h, 0); + c += i; + b.put(h, i + 1); + } + return c; + } +} diff --git a/src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/readme.md b/src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/readme.md new file mode 100644 index 000000000..06fd3e06a --- /dev/null +++ b/src/main/java/g3801_3900/s3805_count_caesar_cipher_pairs/readme.md @@ -0,0 +1,52 @@ +3805\. Count Caesar Cipher Pairs + +Medium + +You are given an array `words` of `n` strings. Each string has length `m` and contains only lowercase English letters. + +Two strings `s` and `t` are **similar** if we can apply the following operation any number of times (possibly zero times) so that `s` and `t` become **equal**. + +* Choose either `s` or `t`. +* Replace **every** letter in the chosen string with the next letter in the alphabet cyclically. The next letter after `'z'` is `'a'`. + +Count the number of pairs of indices `(i, j)` such that: + +* `i < j` +* `words[i]` and `words[j]` are **similar**. + +Return an integer denoting the number of such pairs. + +**Example 1:** + +**Input:** words = ["fusion","layout"] + +**Output:** 1 + +**Explanation:** + +`words[0] = "fusion"` and `words[1] = "layout"` are similar because we can apply the operation to `"fusion"` 6 times. The string `"fusion"` changes as follows. + +* `"fusion"` +* `"gvtjpo"` +* `"hwukqp"` +* `"ixvlrq"` +* `"jywmsr"` +* `"kzxnts"` +* `"layout"` + +**Example 2:** + +**Input:** words = ["ab","aa","za","aa"] + +**Output:** 2 + +**Explanation:** + +`words[0] = "ab"` and `words[2] = "za"` are similar. `words[1] = "aa"` and `words[3] = "aa"` are similar. + +**Constraints:** + +* 1 <= n == words.length <= 105 +* 1 <= m == words[i].length <= 105 +* 1 <= n * m <= 105 +* `words[i]` consists only of lowercase English letters. \ No newline at end of file diff --git a/src/test/java/g3701_3800/s3783_mirror_distance_of_an_integer/SolutionTest.java b/src/test/java/g3701_3800/s3783_mirror_distance_of_an_integer/SolutionTest.java new file mode 100644 index 000000000..5269219d1 --- /dev/null +++ b/src/test/java/g3701_3800/s3783_mirror_distance_of_an_integer/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3783_mirror_distance_of_an_integer; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void mirrorDistance() { + assertThat(new Solution().mirrorDistance(25), equalTo(27)); + } + + @Test + void mirrorDistance2() { + assertThat(new Solution().mirrorDistance(10), equalTo(9)); + } + + @Test + void mirrorDistance3() { + assertThat(new Solution().mirrorDistance(7), equalTo(0)); + } +} diff --git a/src/test/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/SolutionTest.java b/src/test/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/SolutionTest.java new file mode 100644 index 000000000..340d9b555 --- /dev/null +++ b/src/test/java/g3701_3800/s3784_minimum_deletion_cost_to_make_all_characters_equal/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3784_minimum_deletion_cost_to_make_all_characters_equal; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minCost() { + assertThat(new Solution().minCost("aabaac", new int[] {1, 2, 3, 4, 1, 10}), equalTo(11L)); + } + + @Test + void minCost2() { + assertThat(new Solution().minCost("abc", new int[] {10, 5, 8}), equalTo(13L)); + } + + @Test + void minCost3() { + assertThat(new Solution().minCost("zzzzz", new int[] {67, 67, 67, 67, 67}), equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/SolutionTest.java b/src/test/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/SolutionTest.java new file mode 100644 index 000000000..f62722b8d --- /dev/null +++ b/src/test/java/g3701_3800/s3785_minimum_swaps_to_avoid_forbidden_values/SolutionTest.java @@ -0,0 +1,30 @@ +package g3701_3800.s3785_minimum_swaps_to_avoid_forbidden_values; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minSwaps() { + assertThat(new Solution().minSwaps(new int[] {1, 2, 3}, new int[] {3, 2, 1}), equalTo(1)); + } + + @Test + void minSwaps2() { + assertThat( + new Solution().minSwaps(new int[] {4, 6, 6, 5}, new int[] {4, 6, 5, 5}), + equalTo(2)); + } + + @Test + void minSwaps3() { + assertThat(new Solution().minSwaps(new int[] {7, 7}, new int[] {8, 7}), equalTo(-1)); + } + + @Test + void minSwaps4() { + assertThat(new Solution().minSwaps(new int[] {1, 2}, new int[] {2, 1}), equalTo(0)); + } +} diff --git a/src/test/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/SolutionTest.java b/src/test/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/SolutionTest.java new file mode 100644 index 000000000..612c39f55 --- /dev/null +++ b/src/test/java/g3701_3800/s3786_total_sum_of_interaction_cost_in_tree_groups/SolutionTest.java @@ -0,0 +1,40 @@ +package g3701_3800.s3786_total_sum_of_interaction_cost_in_tree_groups; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void interactionCosts() { + assertThat( + new Solution() + .interactionCosts(3, new int[][] {{0, 1}, {1, 2}}, new int[] {1, 1, 1}), + equalTo(4L)); + } + + @Test + void interactionCosts2() { + assertThat( + new Solution() + .interactionCosts(3, new int[][] {{0, 1}, {1, 2}}, new int[] {3, 2, 3}), + equalTo(2L)); + } + + @Test + void interactionCosts3() { + assertThat( + new Solution() + .interactionCosts( + 4, new int[][] {{0, 1}, {0, 2}, {0, 3}}, new int[] {1, 1, 4, 4}), + equalTo(3L)); + } + + @Test + void interactionCosts4() { + assertThat( + new Solution().interactionCosts(2, new int[][] {{0, 1}}, new int[] {9, 8}), + equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3788_maximum_score_of_a_split/SolutionTest.java b/src/test/java/g3701_3800/s3788_maximum_score_of_a_split/SolutionTest.java new file mode 100644 index 000000000..488eb2d06 --- /dev/null +++ b/src/test/java/g3701_3800/s3788_maximum_score_of_a_split/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3788_maximum_score_of_a_split; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void maximumScore() { + assertThat(new Solution().maximumScore(new int[] {10, -1, 3, -4, -5}), equalTo(17L)); + } + + @Test + void maximumScore2() { + assertThat(new Solution().maximumScore(new int[] {-7, -5, 3}), equalTo(-2L)); + } + + @Test + void maximumScore3() { + assertThat(new Solution().maximumScore(new int[] {1, 1}), equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/SolutionTest.java b/src/test/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/SolutionTest.java new file mode 100644 index 000000000..82a47d855 --- /dev/null +++ b/src/test/java/g3701_3800/s3789_minimum_cost_to_acquire_required_items/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3789_minimum_cost_to_acquire_required_items; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minimumCost() { + assertThat(new Solution().minimumCost(3, 2, 1, 3, 2), equalTo(3L)); + } + + @Test + void minimumCost2() { + assertThat(new Solution().minimumCost(5, 4, 15, 2, 3), equalTo(22L)); + } + + @Test + void minimumCost3() { + assertThat(new Solution().minimumCost(5, 4, 15, 0, 0), equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3790_smallest_all_ones_multiple/SolutionTest.java b/src/test/java/g3701_3800/s3790_smallest_all_ones_multiple/SolutionTest.java new file mode 100644 index 000000000..fa7d6d4f5 --- /dev/null +++ b/src/test/java/g3701_3800/s3790_smallest_all_ones_multiple/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3790_smallest_all_ones_multiple; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minAllOneMultiple() { + assertThat(new Solution().minAllOneMultiple(3), equalTo(3)); + } + + @Test + void minAllOneMultiple2() { + assertThat(new Solution().minAllOneMultiple(7), equalTo(6)); + } + + @Test + void minAllOneMultiple3() { + assertThat(new Solution().minAllOneMultiple(2), equalTo(-1)); + } +} diff --git a/src/test/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/SolutionTest.java b/src/test/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/SolutionTest.java new file mode 100644 index 000000000..cc0019291 --- /dev/null +++ b/src/test/java/g3701_3800/s3791_number_of_balanced_integers_in_a_range/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3791_number_of_balanced_integers_in_a_range; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countBalanced() { + assertThat(new Solution().countBalanced(1, 100), equalTo(9L)); + } + + @Test + void countBalanced2() { + assertThat(new Solution().countBalanced(120, 129), equalTo(1L)); + } + + @Test + void countBalanced3() { + assertThat(new Solution().countBalanced(1234, 1234), equalTo(0L)); + } +} diff --git a/src/test/java/g3701_3800/s3793_find_users_with_high_token_usage/MysqlTest.java b/src/test/java/g3701_3800/s3793_find_users_with_high_token_usage/MysqlTest.java new file mode 100644 index 000000000..63d0903a8 --- /dev/null +++ b/src/test/java/g3701_3800/s3793_find_users_with_high_token_usage/MysqlTest.java @@ -0,0 +1,73 @@ +package g3701_3800.s3793_find_users_with_high_token_usage; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import javax.sql.DataSource; +import org.junit.jupiter.api.Test; +import org.zapodot.junit.db.annotations.EmbeddedDatabase; +import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest; +import org.zapodot.junit.db.common.CompatibilityMode; + +@EmbeddedDatabaseTest( + compatibilityMode = CompatibilityMode.MySQL, + initialSqls = + "CREATE TABLE prompts (" + + " user_id INTEGER," + + " prompt VARCHAR(512)," + + " tokens INTEGER," + + " PRIMARY KEY (user_id, prompt)" + + ");" + + "INSERT INTO prompts (user_id, prompt, tokens) VALUES" + + "(1, 'Write a blog outline', 120)," + + "(1, 'Generate SQL query', 80)," + + "(1, 'Summarize an article', 200)," + + "(2, 'Create resume bullet', 60)," + + "(2, 'Improve LinkedIn bio', 70)," + + "(3, 'Explain neural networks', 300)," + + "(3, 'Generate interview Q&A', 250)," + + "(3, 'Write cover letter', 180)," + + "(3, 'Optimize Python code', 220);") +class MysqlTest { + @Test + void testScript(@EmbeddedDatabase DataSource dataSource) + throws SQLException, FileNotFoundException { + try (final Connection connection = dataSource.getConnection()) { + try (final Statement statement = connection.createStatement(); + final ResultSet resultSet = + statement.executeQuery( + new BufferedReader( + new FileReader( + "src/main/java/g3701_3800/" + + "s3793_find_users_with_high_token_usage/" + + "script.sql")) + .lines() + .collect(Collectors.joining("\n")) + .replaceAll("#.*?\\r?\\n", ""))) { + List actualRows = new ArrayList<>(); + while (resultSet.next()) { + actualRows.add( + resultSet.getString(1) + + "|" + + resultSet.getString(2) + + "|" + + resultSet.getString(3)); + } + + List expectedRows = Arrays.asList("3|4|237.5", "1|3|133.33"); + assertThat(actualRows, equalTo(expectedRows)); + } + } + } +} diff --git a/src/test/java/g3701_3800/s3794_reverse_string_prefix/SolutionTest.java b/src/test/java/g3701_3800/s3794_reverse_string_prefix/SolutionTest.java new file mode 100644 index 000000000..921f2eb96 --- /dev/null +++ b/src/test/java/g3701_3800/s3794_reverse_string_prefix/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3794_reverse_string_prefix; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void reversePrefix() { + assertThat(new Solution().reversePrefix("abcd", 2), equalTo("bacd")); + } + + @Test + void reversePrefix2() { + assertThat(new Solution().reversePrefix("xyz", 3), equalTo("zyx")); + } + + @Test + void reversePrefix3() { + assertThat(new Solution().reversePrefix("hey", 1), equalTo("hey")); + } +} diff --git a/src/test/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/SolutionTest.java b/src/test/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/SolutionTest.java new file mode 100644 index 000000000..75aab4dd9 --- /dev/null +++ b/src/test/java/g3701_3800/s3795_minimum_subarray_length_with_distinct_sum_at_least_k/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3795_minimum_subarray_length_with_distinct_sum_at_least_k; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minLength() { + assertThat(new Solution().minLength(new int[] {2, 2, 3, 1}, 4), equalTo(2)); + } + + @Test + void minLength2() { + assertThat(new Solution().minLength(new int[] {3, 2, 3, 4}, 5), equalTo(2)); + } + + @Test + void minLength3() { + assertThat(new Solution().minLength(new int[] {5, 5, 4}, 5), equalTo(1)); + } +} diff --git a/src/test/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/SolutionTest.java b/src/test/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/SolutionTest.java new file mode 100644 index 000000000..d1f5e30af --- /dev/null +++ b/src/test/java/g3701_3800/s3796_find_maximum_value_in_a_constrained_sequence/SolutionTest.java @@ -0,0 +1,26 @@ +package g3701_3800.s3796_find_maximum_value_in_a_constrained_sequence; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void findMaxVal() { + assertThat( + new Solution() + .findMaxVal( + 10, + new int[][] {{3, 1}, {8, 1}}, + new int[] {2, 2, 3, 1, 4, 5, 1, 1, 2}), + equalTo(6)); + } + + @Test + void findMaxVal2() { + assertThat( + new Solution().findMaxVal(8, new int[][] {{3, 2}}, new int[] {3, 5, 2, 4, 2, 3, 1}), + equalTo(12)); + } +} diff --git a/src/test/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/SolutionTest.java b/src/test/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/SolutionTest.java new file mode 100644 index 000000000..dc8aae9cb --- /dev/null +++ b/src/test/java/g3701_3800/s3797_count_routes_to_climb_a_rectangular_grid/SolutionTest.java @@ -0,0 +1,28 @@ +package g3701_3800.s3797_count_routes_to_climb_a_rectangular_grid; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void numberOfRoutes() { + assertThat(new Solution().numberOfRoutes(new String[] {"..", "#."}, 1), equalTo(2)); + } + + @Test + void numberOfRoutes2() { + assertThat(new Solution().numberOfRoutes(new String[] {"..", "#."}, 2), equalTo(4)); + } + + @Test + void numberOfRoutes3() { + assertThat(new Solution().numberOfRoutes(new String[] {"#"}, 750), equalTo(0)); + } + + @Test + void numberOfRoutes4() { + assertThat(new Solution().numberOfRoutes(new String[] {".."}, 1), equalTo(4)); + } +} diff --git a/src/test/java/g3701_3800/s3798_largest_even_number/SolutionTest.java b/src/test/java/g3701_3800/s3798_largest_even_number/SolutionTest.java new file mode 100644 index 000000000..529a91bbd --- /dev/null +++ b/src/test/java/g3701_3800/s3798_largest_even_number/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3798_largest_even_number; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void largestEven() { + assertThat(new Solution().largestEven("1112"), equalTo("1112")); + } + + @Test + void largestEven2() { + assertThat(new Solution().largestEven("221"), equalTo("22")); + } + + @Test + void largestEven3() { + assertThat(new Solution().largestEven("1"), equalTo("")); + } +} diff --git a/src/test/java/g3701_3800/s3799_word_squares_ii/SolutionTest.java b/src/test/java/g3701_3800/s3799_word_squares_ii/SolutionTest.java new file mode 100644 index 000000000..27aad4968 --- /dev/null +++ b/src/test/java/g3701_3800/s3799_word_squares_ii/SolutionTest.java @@ -0,0 +1,29 @@ +package g3701_3800.s3799_word_squares_ii; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void wordSquares() { + List> result = + new Solution().wordSquares(new String[] {"able", "area", "echo", "also"}); + assertThat( + result, + equalTo( + Arrays.asList( + Arrays.asList("able", "area", "echo", "also"), + Arrays.asList("area", "able", "also", "echo")))); + } + + @Test + void wordSquares2() { + assertThat( + new Solution().wordSquares(new String[] {"code", "cafe", "eden", "edge"}), + equalTo(Arrays.asList())); + } +} diff --git a/src/test/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/SolutionTest.java b/src/test/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/SolutionTest.java new file mode 100644 index 000000000..0c160a72b --- /dev/null +++ b/src/test/java/g3701_3800/s3800_minimum_cost_to_make_two_binary_strings_equal/SolutionTest.java @@ -0,0 +1,23 @@ +package g3701_3800.s3800_minimum_cost_to_make_two_binary_strings_equal; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minimumCost() { + assertThat(new Solution().minimumCost("01000", "10111", 10, 2, 2), equalTo(16L)); + } + + @Test + void minimumCost2() { + assertThat(new Solution().minimumCost("001", "110", 2, 100, 100), equalTo(6L)); + } + + @Test + void minimumCost3() { + assertThat(new Solution().minimumCost("1010", "1010", 5, 5, 5), equalTo(0L)); + } +} diff --git a/src/test/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/SolutionTest.java b/src/test/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/SolutionTest.java new file mode 100644 index 000000000..99b2cf30d --- /dev/null +++ b/src/test/java/g3801_3900/s3801_minimum_cost_to_merge_sorted_lists/SolutionTest.java @@ -0,0 +1,31 @@ +package g3801_3900.s3801_minimum_cost_to_merge_sorted_lists; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void minMergeCost() { + assertThat( + new Solution().minMergeCost(new int[][] {{1, 3, 5}, {2, 4}, {6, 7, 8}}), + equalTo(18L)); + } + + @Test + void minMergeCost2() { + assertThat( + new Solution().minMergeCost(new int[][] {{1, 1, 5}, {1, 4, 7, 8}}), equalTo(10L)); + } + + @Test + void minMergeCost3() { + assertThat(new Solution().minMergeCost(new int[][] {{1}, {3}}), equalTo(4L)); + } + + @Test + void minMergeCost4() { + assertThat(new Solution().minMergeCost(new int[][] {{1}, {1}}), equalTo(2L)); + } +} diff --git a/src/test/java/g3801_3900/s3803_count_residue_prefixes/SolutionTest.java b/src/test/java/g3801_3900/s3803_count_residue_prefixes/SolutionTest.java new file mode 100644 index 000000000..d09c3f3f6 --- /dev/null +++ b/src/test/java/g3801_3900/s3803_count_residue_prefixes/SolutionTest.java @@ -0,0 +1,23 @@ +package g3801_3900.s3803_count_residue_prefixes; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void residuePrefixes() { + assertThat(new Solution().residuePrefixes("abc"), equalTo(2)); + } + + @Test + void residuePrefixes2() { + assertThat(new Solution().residuePrefixes("dd"), equalTo(1)); + } + + @Test + void residuePrefixes3() { + assertThat(new Solution().residuePrefixes("bob"), equalTo(2)); + } +} diff --git a/src/test/java/g3801_3900/s3804_number_of_centered_subarrays/SolutionTest.java b/src/test/java/g3801_3900/s3804_number_of_centered_subarrays/SolutionTest.java new file mode 100644 index 000000000..1dc8b981c --- /dev/null +++ b/src/test/java/g3801_3900/s3804_number_of_centered_subarrays/SolutionTest.java @@ -0,0 +1,18 @@ +package g3801_3900.s3804_number_of_centered_subarrays; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void centeredSubarrays() { + assertThat(new Solution().centeredSubarrays(new int[] {-1, 1, 0}), equalTo(5)); + } + + @Test + void centeredSubarrays2() { + assertThat(new Solution().centeredSubarrays(new int[] {2, -3}), equalTo(2)); + } +} diff --git a/src/test/java/g3801_3900/s3805_count_caesar_cipher_pairs/SolutionTest.java b/src/test/java/g3801_3900/s3805_count_caesar_cipher_pairs/SolutionTest.java new file mode 100644 index 000000000..c8f166f2b --- /dev/null +++ b/src/test/java/g3801_3900/s3805_count_caesar_cipher_pairs/SolutionTest.java @@ -0,0 +1,18 @@ +package g3801_3900.s3805_count_caesar_cipher_pairs; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.jupiter.api.Test; + +class SolutionTest { + @Test + void countPairs() { + assertThat(new Solution().countPairs(new String[] {"fusion", "layout"}), equalTo(1L)); + } + + @Test + void countPairs2() { + assertThat(new Solution().countPairs(new String[] {"ab", "aa", "za", "aa"}), equalTo(2L)); + } +}