From f78332ae3f288980c123e9bb12c30490a909370d Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Thu, 10 Apr 2025 20:28:42 +0700 Subject: [PATCH] Added tasks 199-209 --- README.md | 19 +++++++++ .../readme.md | 30 ++++++++++++++ .../solution.ts | 35 +++++++++++++++++ .../readme.md | 27 +++++++++++++ .../solution.ts | 18 +++++++++ .../g0201_0300/s0202_happy_number/readme.md | 39 +++++++++++++++++++ .../g0201_0300/s0202_happy_number/solution.ts | 23 +++++++++++ .../s0205_isomorphic_strings/readme.md | 33 ++++++++++++++++ .../s0205_isomorphic_strings/solution.ts | 23 +++++++++++ .../s0209_minimum_size_subarray_sum/readme.md | 33 ++++++++++++++++ .../solution.ts | 29 ++++++++++++++ .../solution.test.ts | 20 ++++++++++ .../solution.test.ts | 15 +++++++ .../s0202_happy_number/solution.test.ts | 11 ++++++ .../s0205_isomorphic_strings/solution.test.ts | 15 +++++++ .../solution.test.ts | 15 +++++++ 16 files changed, 385 insertions(+) create mode 100644 src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/readme.md create mode 100644 src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts create mode 100644 src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/readme.md create mode 100644 src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts create mode 100644 src/main/ts/g0201_0300/s0202_happy_number/readme.md create mode 100644 src/main/ts/g0201_0300/s0202_happy_number/solution.ts create mode 100644 src/main/ts/g0201_0300/s0205_isomorphic_strings/readme.md create mode 100644 src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts create mode 100644 src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/readme.md create mode 100644 src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts create mode 100644 src/test/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.test.ts create mode 100644 src/test/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.test.ts create mode 100644 src/test/ts/g0201_0300/s0202_happy_number/solution.test.ts create mode 100644 src/test/ts/g0201_0300/s0205_isomorphic_strings/solution.test.ts create mode 100644 src/test/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.test.ts diff --git a/README.md b/README.md index e005019..e72f8a0 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0209 |[Minimum Size Subarray Sum](src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 2 | 88.11 #### Day 2 @@ -353,6 +354,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0202 |[Happy Number](src/main/ts/g0201_0300/s0202_happy_number/solution.ts)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 #### Day 5 Function @@ -650,6 +652,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0205 |[Isomorphic Strings](src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts)| Easy | String, Hash_Table | 3 | 96.02 #### Day 3 Linked List @@ -734,6 +737,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0202 |[Happy Number](src/main/ts/g0201_0300/s0202_happy_number/solution.ts)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 | 0054 |[Spiral Matrix](src/main/ts/g0001_0100/s0054_spiral_matrix/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 #### Day 2 String @@ -824,6 +828,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- | 0101 |[Symmetric Tree](src/main/ts/g0101_0200/s0101_symmetric_tree/solution.ts)| 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/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 #### Day 16 Design @@ -1061,6 +1066,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0209 |[Minimum Size Subarray Sum](src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 2 | 88.11 | 0003 |[Longest Substring Without Repeating Characters](src/main/ts/g0001_0100/s0003_longest_substring_without_repeating_characters/solution.ts)| 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 | 3 | 96.91 | 0030 |[Substring with Concatenation of All Words](src/main/ts/g0001_0100/s0030_substring_with_concatenation_of_all_words/solution.ts)| Hard | String, Hash_Table, Sliding_Window | 13 | 97.44 | 0076 |[Minimum Window Substring](src/main/ts/g0001_0100/s0076_minimum_window_substring/solution.ts)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 20 | 90.35 @@ -1078,8 +1084,10 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0205 |[Isomorphic Strings](src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts)| Easy | String, Hash_Table | 3 | 96.02 | 0049 |[Group Anagrams](src/main/ts/g0001_0100/s0049_group_anagrams/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 27 | 78.99 | 0001 |[Two Sum](src/main/ts/g0001_0100/s0001_two_sum/solution.ts)| 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 | 1 | 89.70 +| 0202 |[Happy Number](src/main/ts/g0201_0300/s0202_happy_number/solution.ts)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 | 0128 |[Longest Consecutive Sequence](src/main/ts/g0101_0200/s0128_longest_consecutive_sequence/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Union_Find, Big_O_Time_O(N_log_N)_Space_O(1) | 34 | 90.07 #### Top Interview 150 Intervals @@ -1135,6 +1143,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0199 |[Binary Tree Right Side View](src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 | 0102 |[Binary Tree Level Order Traversal](src/main/ts/g0101_0200/s0102_binary_tree_level_order_traversal/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree, Big_O_Time_O(N)_Space_O(N) | 0 | 100.00 | 0103 |[Binary Tree Zigzag Level Order Traversal](src/main/ts/g0101_0200/s0103_binary_tree_zigzag_level_order_traversal/solution.ts)| Medium | Top_Interview_Questions, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 @@ -1218,6 +1227,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | 0191 |[Number of 1 Bits](src/main/ts/g0101_0200/s0191_number_of_1_bits/solution.ts)| Easy | Top_Interview_Questions, Bit_Manipulation | 0 | 100.00 | 0136 |[Single Number](src/main/ts/g0101_0200/s0136_single_number/solution.ts)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Big_O_Time_O(N)_Space_O(1) | 1 | 78.27 | 0137 |[Single Number II](src/main/ts/g0101_0200/s0137_single_number_ii/solution.ts)| Medium | Array, Bit_Manipulation | 0 | 100.00 +| 0201 |[Bitwise AND of Numbers Range](src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts)| Medium | Bit_Manipulation | 2 | 99.12 #### Top Interview 150 Math @@ -1446,6 +1456,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0199 |[Binary Tree Right Side View](src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00 #### Day 17 Tree @@ -1600,6 +1611,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- | 0438 |[Find All Anagrams in a String](src/main/ts/g0401_0500/s0438_find_all_anagrams_in_a_string/solution.ts)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 8 | 97.80 +| 0209 |[Minimum Size Subarray Sum](src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window | 2 | 88.11 #### Day 6 Breadth First Search Depth First Search @@ -1686,6 +1698,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0201 |[Bitwise AND of Numbers Range](src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts)| Medium | Bit_Manipulation | 2 | 99.12 #### Day 20 Others @@ -1696,6 +1709,7 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | | | | | | |-|-|-|-|-|- +| 0202 |[Happy Number](src/main/ts/g0201_0300/s0202_happy_number/solution.ts)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers | 0 | 100.00 | 0149 |[Max Points on a Line](src/main/ts/g0101_0200/s0149_max_points_on_a_line/solution.ts)| Hard | Top_Interview_Questions, Array, Hash_Table, Math, Geometry | 9 | 97.18 ## Algorithms @@ -1729,10 +1743,15 @@ TypeScript-based LeetCode algorithm problem solutions, regularly updated. | 0226 |[Invert Binary Tree](src/main/ts/g0201_0300/s0226_invert_binary_tree/solution.ts)| Easy | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Data_Structure_I_Day_12_Tree, Level_2_Day_6_Tree, Udemy_Tree_Stack_Queue, Top_Interview_150_Binary_Tree_General, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 | 0221 |[Maximal Square](src/main/ts/g0201_0300/s0221_maximal_square/solution.ts)| Medium | Array, Dynamic_Programming, Matrix, Dynamic_Programming_I_Day_16, Top_Interview_150_Multidimensional_DP, Big_O_Time_O(m\*n)_Space_O(m\*n) | 18 | 59.02 | 0215 |[Kth Largest Element in an Array](src/main/ts/g0201_0300/s0215_kth_largest_element_in_an_array/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, Data_Structure_II_Day_20_Heap_Priority_Queue, Top_Interview_150_Heap, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 4 | 99.64 +| 0209 |[Minimum Size Subarray Sum](src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts)| Medium | Array, Binary_Search, Prefix_Sum, Sliding_Window, Algorithm_II_Day_5_Sliding_Window, Binary_Search_II_Day_1, Top_Interview_150_Sliding_Window | 2 | 88.11 | 0208 |[Implement Trie (Prefix Tree)](src/main/ts/g0201_0300/s0208_implement_trie_prefix_tree/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Design, Trie, Level_2_Day_16_Design, Udemy_Trie_and_Heap, Top_Interview_150_Trie, Big_O_Time_O(word.length())_or_O(prefix.length())_Space_O(N) | 48 | 63.95 | 0207 |[Course Schedule](src/main/ts/g0201_0300/s0207_course_schedule/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Depth_First_Search, Breadth_First_Search, Graph, Topological_Sort, Top_Interview_150_Graph_General, Big_O_Time_O(N)_Space_O(N) | 11 | 81.08 | 0206 |[Reverse Linked List](src/main/ts/g0201_0300/s0206_reverse_linked_list/solution.ts)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Linked_List, Recursion, Data_Structure_I_Day_8_Linked_List, Algorithm_I_Day_10_Recursion_Backtracking, Level_1_Day_3_Linked_List, Udemy_Linked_List, Big_O_Time_O(N)_Space_O(1) | 0 | 100.00 +| 0205 |[Isomorphic Strings](src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts)| Easy | String, Hash_Table, Level_1_Day_2_String, Top_Interview_150_Hashmap | 3 | 96.02 +| 0202 |[Happy Number](src/main/ts/g0201_0300/s0202_happy_number/solution.ts)| Easy | Top_Interview_Questions, Hash_Table, Math, Two_Pointers, Algorithm_II_Day_21_Others, Programming_Skills_I_Day_4_Loop, Level_2_Day_1_Implementation/Simulation, Top_Interview_150_Hashmap | 0 | 100.00 +| 0201 |[Bitwise AND of Numbers Range](src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts)| Medium | Bit_Manipulation, Algorithm_II_Day_19_Bit_Manipulation, Top_Interview_150_Bit_Manipulation | 2 | 99.12 | 0200 |[Number of Islands](src/main/ts/g0101_0200/s0200_number_of_islands/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find, Algorithm_II_Day_6_Breadth_First_Search_Depth_First_Search, Graph_Theory_I_Day_1_Matrix_Related_Problems, Level_1_Day_9_Graph/BFS/DFS, Udemy_Graph, Top_Interview_150_Graph_General, Big_O_Time_O(M\*N)_Space_O(M\*N) | 57 | 93.94 +| 0199 |[Binary Tree Right Side View](src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts)| Medium | Top_100_Liked_Questions, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Data_Structure_II_Day_16_Tree, Level_2_Day_15_Tree, Top_Interview_150_Binary_Tree_BFS | 0 | 100.00 | 0198 |[House Robber](src/main/ts/g0101_0200/s0198_house_robber/solution.ts)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Algorithm_I_Day_12_Dynamic_Programming, Dynamic_Programming_I_Day_3, Level_2_Day_12_Dynamic_Programming, Udemy_Dynamic_Programming, Top_Interview_150_1D_DP, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 | 0191 |[Number of 1 Bits](src/main/ts/g0101_0200/s0191_number_of_1_bits/solution.ts)| Easy | Top_Interview_Questions, Bit_Manipulation, Algorithm_I_Day_13_Bit_Manipulation, Programming_Skills_I_Day_2_Operator, Udemy_Bit_Manipulation, Top_Interview_150_Bit_Manipulation | 0 | 100.00 | 0190 |[Reverse Bits](src/main/ts/g0101_0200/s0190_reverse_bits/solution.ts)| Easy | Top_Interview_Questions, Bit_Manipulation, Divide_and_Conquer, Algorithm_I_Day_14_Bit_Manipulation, Udemy_Bit_Manipulation, Top_Interview_150_Bit_Manipulation | 34 | 99.74 diff --git a/src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/readme.md b/src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/readme.md new file mode 100644 index 0000000..b3cb904 --- /dev/null +++ b/src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/readme.md @@ -0,0 +1,30 @@ +199\. Binary Tree Right Side View + +Medium + +Given the `root` of a binary tree, imagine yourself standing on the **right side** of it, return _the values of the nodes you can see ordered from top to bottom_. + +**Example 1:** + +![](https://assets.leetcode.com/uploads/2021/02/14/tree.jpg) + +**Input:** root = [1,2,3,null,5,null,4] + +**Output:** [1,3,4] + +**Example 2:** + +**Input:** root = [1,null,3] + +**Output:** [1,3] + +**Example 3:** + +**Input:** root = [] + +**Output:** [] + +**Constraints:** + +* The number of nodes in the tree is in the range `[0, 100]`. +* `-100 <= Node.val <= 100` diff --git a/src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts b/src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts new file mode 100644 index 0000000..7011329 --- /dev/null +++ b/src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.ts @@ -0,0 +1,35 @@ +// #Medium #Top_100_Liked_Questions #Depth_First_Search #Breadth_First_Search #Tree #Binary_Tree +// #Data_Structure_II_Day_16_Tree #Level_2_Day_15_Tree #Top_Interview_150_Binary_Tree_BFS +// #2025_04_10_Time_0_ms_(100.00%)_Space_56.98_MB_(73.71%) + +import { TreeNode } from '../../com_github_leetcode/treenode' + +/** + * Definition for a binary tree node. + * class TreeNode { + * val: number + * left: TreeNode | null + * right: TreeNode | null + * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + * } + */ +function rightSideView(root: TreeNode | null): number[] { + const result: number[] = [] + function recurse(node: TreeNode | null, level: number): void { + if (node !== null) { + if (result.length === level) { + result.push(node.val) + } + recurse(node.right, level + 1) + recurse(node.left, level + 1) + } + } + recurse(root, 0) + return result +} + +export { rightSideView } diff --git a/src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/readme.md b/src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/readme.md new file mode 100644 index 0000000..879520b --- /dev/null +++ b/src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/readme.md @@ -0,0 +1,27 @@ +201\. Bitwise AND of Numbers Range + +Medium + +Given two integers `left` and `right` that represent the range `[left, right]`, return _the bitwise AND of all numbers in this range, inclusive_. + +**Example 1:** + +**Input:** left = 5, right = 7 + +**Output:** 4 + +**Example 2:** + +**Input:** left = 0, right = 0 + +**Output:** 0 + +**Example 3:** + +**Input:** left = 1, right = 2147483647 + +**Output:** 0 + +**Constraints:** + +* 0 <= left <= right <= 231 - 1 diff --git a/src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts b/src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts new file mode 100644 index 0000000..04d02e0 --- /dev/null +++ b/src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.ts @@ -0,0 +1,18 @@ +// #Medium #Bit_Manipulation #Algorithm_II_Day_19_Bit_Manipulation +// #Top_Interview_150_Bit_Manipulation #2025_04_10_Time_2_ms_(99.12%)_Space_64.48_MB_(7.02%) + +function rangeBitwiseAnd(left: number, right: number): number { + const MASKS: number[] = [ + 0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000, 0xfc000000, 0xfe000000, 0xff000000, + 0xff800000, 0xffc00000, 0xffe00000, 0xfff00000, 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, 0xffff8000, + 0xffffc000, 0xffffe000, 0xfffff000, 0xfffff800, 0xfffffc00, 0xfffffe00, 0xffffff00, 0xffffff80, 0xffffffc0, + 0xffffffe0, 0xfffffff0, 0xfffffff8, 0xfffffffc, 0xfffffffe, + ] + if (left === right) { + return left + } + const leadingZeros = Math.clz32(left ^ right) + return right & MASKS[leadingZeros] +} + +export { rangeBitwiseAnd } diff --git a/src/main/ts/g0201_0300/s0202_happy_number/readme.md b/src/main/ts/g0201_0300/s0202_happy_number/readme.md new file mode 100644 index 0000000..6a56b07 --- /dev/null +++ b/src/main/ts/g0201_0300/s0202_happy_number/readme.md @@ -0,0 +1,39 @@ +202\. Happy Number + +Easy + +Write an algorithm to determine if a number `n` is happy. + +A **happy number** is a number defined by the following process: + +* Starting with any positive integer, replace the number by the sum of the squares of its digits. +* Repeat the process until the number equals 1 (where it will stay), or it **loops endlessly in a cycle** which does not include 1. +* Those numbers for which this process **ends in 1** are happy. + +Return `true` _if_ `n` _is a happy number, and_ `false` _if not_. + +**Example 1:** + +**Input:** n = 19 + +**Output:** true + +**Explanation:** + +12 + 92 = 82 + +82 + 22 = 68 + +62 + 82 = 100 + +12 + 02 + 02 = 1 + +**Example 2:** + +**Input:** n = 2 + +**Output:** false + +**Constraints:** + +* 1 <= n <= 231 - 1 \ No newline at end of file diff --git a/src/main/ts/g0201_0300/s0202_happy_number/solution.ts b/src/main/ts/g0201_0300/s0202_happy_number/solution.ts new file mode 100644 index 0000000..0e48c4d --- /dev/null +++ b/src/main/ts/g0201_0300/s0202_happy_number/solution.ts @@ -0,0 +1,23 @@ +// #Easy #Top_Interview_Questions #Hash_Table #Math #Two_Pointers #Algorithm_II_Day_21_Others +// #Programming_Skills_I_Day_4_Loop #Level_2_Day_1_Implementation/Simulation +// #Top_Interview_150_Hashmap #2025_04_10_Time_0_ms_(100.00%)_Space_55.45_MB_(83.98%) + +function isHappy(n: number): boolean { + let a = n + let rem: number + let sum = 0 + if (a === 1 || a === 7) { + return true + } else if (a > 1 && a < 10) { + return false + } else { + while (a !== 0) { + rem = a % 10 + sum += rem * rem + a = Math.floor(a / 10) + } + return sum === 1 ? true : isHappy(sum) + } +} + +export { isHappy } diff --git a/src/main/ts/g0201_0300/s0205_isomorphic_strings/readme.md b/src/main/ts/g0201_0300/s0205_isomorphic_strings/readme.md new file mode 100644 index 0000000..d91e8ce --- /dev/null +++ b/src/main/ts/g0201_0300/s0205_isomorphic_strings/readme.md @@ -0,0 +1,33 @@ +205\. Isomorphic Strings + +Easy + +Given two strings `s` and `t`, _determine if they are isomorphic_. + +Two strings `s` and `t` are isomorphic if the characters in `s` can be replaced to get `t`. + +All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself. + +**Example 1:** + +**Input:** s = "egg", t = "add" + +**Output:** true + +**Example 2:** + +**Input:** s = "foo", t = "bar" + +**Output:** false + +**Example 3:** + +**Input:** s = "paper", t = "title" + +**Output:** true + +**Constraints:** + +* 1 <= s.length <= 5 * 104 +* `t.length == s.length` +* `s` and `t` consist of any valid ascii character. diff --git a/src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts b/src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts new file mode 100644 index 0000000..cc73876 --- /dev/null +++ b/src/main/ts/g0201_0300/s0205_isomorphic_strings/solution.ts @@ -0,0 +1,23 @@ +// #Easy #String #Hash_Table #Level_1_Day_2_String #Top_Interview_150_Hashmap +// #2025_04_10_Time_3_ms_(96.02%)_Space_56.62_MB_(65.86%) + +function isIsomorphic(s: string, t: string): boolean { + if (s.length !== t.length) { + return false + } + const mapS = new Map() + const mapT = new Map() + for (let i = 0; i < s.length; i++) { + if (mapS.has(s[i]) || mapT.has(t[i])) { + if (mapS.get(s[i]) !== t[i] || mapT.get(t[i]) !== s[i]) { + return false + } + } else { + mapS.set(s[i], t[i]) + mapT.set(t[i], s[i]) + } + } + return true +} + +export { isIsomorphic } diff --git a/src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/readme.md b/src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/readme.md new file mode 100644 index 0000000..0e301a6 --- /dev/null +++ b/src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/readme.md @@ -0,0 +1,33 @@ +209\. Minimum Size Subarray Sum + +Medium + +Given an array of positive integers `nums` and a positive integer `target`, return the minimal length of a **contiguous subarray** [numsl, numsl+1, ..., numsr-1, numsr] of which the sum is greater than or equal to `target`. If there is no such subarray, return `0` instead. + +**Example 1:** + +**Input:** target = 7, nums = [2,3,1,2,4,3] + +**Output:** 2 + +**Explanation:** The subarray [4,3] has the minimal length under the problem constraint. + +**Example 2:** + +**Input:** target = 4, nums = [1,4,4] + +**Output:** 1 + +**Example 3:** + +**Input:** target = 11, nums = [1,1,1,1,1,1,1,1] + +**Output:** 0 + +**Constraints:** + +* 1 <= target <= 109 +* 1 <= nums.length <= 105 +* 1 <= nums[i] <= 105 + +**Follow up:** If you have figured out the `O(n)` solution, try coding another solution of which the time complexity is `O(n log(n))`. diff --git a/src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts b/src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts new file mode 100644 index 0000000..90c234f --- /dev/null +++ b/src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.ts @@ -0,0 +1,29 @@ +// #Medium #Array #Binary_Search #Prefix_Sum #Sliding_Window #Algorithm_II_Day_5_Sliding_Window +// #Binary_Search_II_Day_1 #Top_Interview_150_Sliding_Window +// #2025_04_10_Time_2_ms_(88.11%)_Space_59.64_MB_(83.02%) + +function minSubArrayLen(target: number, nums: number[]): number { + let i = 0 + let j = 0 + let sum = 0 + let min = Number.MAX_SAFE_INTEGER + while (j < nums.length) { + sum += nums[j] + if (sum >= target) { + while (i <= j) { + if (sum - nums[i] >= target) { + sum -= nums[i] + i++ + } else { + break + } + } + min = Math.min(min, j - i + 1) + } + + j++ + } + return min === Number.MAX_SAFE_INTEGER ? 0 : min +} + +export { minSubArrayLen } diff --git a/src/test/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.test.ts b/src/test/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.test.ts new file mode 100644 index 0000000..bec5f07 --- /dev/null +++ b/src/test/ts/g0101_0200/s0199_binary_tree_right_side_view/solution.test.ts @@ -0,0 +1,20 @@ +// tslint:disable:no-magic-numbers +import { createTreeNode } from 'src/main/ts/com_github_leetcode/treenode' +import { rightSideView } from 'src/main/ts/g0101_0200/s0199_binary_tree_right_side_view/solution' +import { expect, test } from 'vitest' + +test('rightSideView', () => { + expect(rightSideView(createTreeNode([1, 2, 3, null, 5, null, 4]))).toEqual([1, 3, 4]) +}) + +test('rightSideView2', () => { + expect(rightSideView(createTreeNode([1, 2, 3, 4, null, null, null, 5]))).toEqual([1, 3, 4, 5]) +}) + +test('rightSideView3', () => { + expect(rightSideView(createTreeNode([1, null, 3]))).toEqual([1, 3]) +}) + +test('rightSideView4', () => { + expect(rightSideView(createTreeNode([]))).toEqual([]) +}) diff --git a/src/test/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.test.ts b/src/test/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.test.ts new file mode 100644 index 0000000..bcae1f9 --- /dev/null +++ b/src/test/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution.test.ts @@ -0,0 +1,15 @@ +// tslint:disable:no-magic-numbers +import { rangeBitwiseAnd } from 'src/main/ts/g0201_0300/s0201_bitwise_and_of_numbers_range/solution' +import { expect, test } from 'vitest' + +test('rangeBitwiseAnd', () => { + expect(rangeBitwiseAnd(5, 7)).toEqual(4) +}) + +test('rangeBitwiseAnd2', () => { + expect(rangeBitwiseAnd(0, 0)).toEqual(0) +}) + +test('rangeBitwiseAnd3', () => { + expect(rangeBitwiseAnd(1, 2147483647)).toEqual(0) +}) diff --git a/src/test/ts/g0201_0300/s0202_happy_number/solution.test.ts b/src/test/ts/g0201_0300/s0202_happy_number/solution.test.ts new file mode 100644 index 0000000..71b00b9 --- /dev/null +++ b/src/test/ts/g0201_0300/s0202_happy_number/solution.test.ts @@ -0,0 +1,11 @@ +// tslint:disable:no-magic-numbers +import { isHappy } from 'src/main/ts/g0201_0300/s0202_happy_number/solution' +import { expect, test } from 'vitest' + +test('isHappy', () => { + expect(isHappy(19)).toEqual(true) +}) + +test('isHappy2', () => { + expect(isHappy(2)).toEqual(false) +}) diff --git a/src/test/ts/g0201_0300/s0205_isomorphic_strings/solution.test.ts b/src/test/ts/g0201_0300/s0205_isomorphic_strings/solution.test.ts new file mode 100644 index 0000000..241b098 --- /dev/null +++ b/src/test/ts/g0201_0300/s0205_isomorphic_strings/solution.test.ts @@ -0,0 +1,15 @@ +// tslint:disable:no-magic-numbers +import { isIsomorphic } from 'src/main/ts/g0201_0300/s0205_isomorphic_strings/solution' +import { expect, test } from 'vitest' + +test('isIsomorphic', () => { + expect(isIsomorphic('egg', 'add')).toEqual(true) +}) + +test('isIsomorphic2', () => { + expect(isIsomorphic('foo', 'bar')).toEqual(false) +}) + +test('isIsomorphic3', () => { + expect(isIsomorphic('paper', 'title')).toEqual(true) +}) diff --git a/src/test/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.test.ts b/src/test/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.test.ts new file mode 100644 index 0000000..24a92d0 --- /dev/null +++ b/src/test/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution.test.ts @@ -0,0 +1,15 @@ +// tslint:disable:no-magic-numbers +import { minSubArrayLen } from 'src/main/ts/g0201_0300/s0209_minimum_size_subarray_sum/solution' +import { expect, test } from 'vitest' + +test('minSubArrayLen', () => { + expect(minSubArrayLen(7, [2,3,1,2,4,3])).toEqual(2) +}) + +test('minSubArrayLen2', () => { + expect(minSubArrayLen(4, [1,4,4])).toEqual(1) +}) + +test('minSubArrayLen3', () => { + expect(minSubArrayLen(11, [1,1,1,1,1,1,1,1])).toEqual(0) +})