diff --git a/solution/2500-2599/2501.Longest Square Streak in an Array/README.md b/solution/2500-2599/2501.Longest Square Streak in an Array/README.md index a8b430b774697..a8ae88543abb9 100644 --- a/solution/2500-2599/2501.Longest Square Streak in an Array/README.md +++ b/solution/2500-2599/2501.Longest Square Streak in an Array/README.md @@ -287,6 +287,46 @@ func longestSquareStreak(nums []int) (ans int) { } ``` +#### TypeScript + +```ts +function longestSquareStreak(nums: number[]): number { + const set = new Set(nums); + const cache = new Map(); + const dfs = (x: number): number => { + if (cache.has(x)) return cache.get(x)!; + if (!set.has(x)) return 0; + cache.set(x, 1 + dfs(x ** 2)); + return cache.get(x)!; + }; + + for (const x of set) dfs(x); + const ans = Math.max(...cache.values()); + + return ans > 1 ? ans : -1; +} +``` + +#### JavaScript + +```js +function longestSquareStreak(nums) { + const set = new Set(nums); + const cache = new Map(); + const dfs = x => { + if (cache.has(x)) return cache.get(x); + if (!set.has(x)) return 0; + cache.set(x, 1 + dfs(x ** 2)); + return cache.get(x); + }; + + for (const x of set) dfs(x); + const ans = Math.max(...cache.values()); + + return ans > 1 ? ans : -1; +} +``` + diff --git a/solution/2500-2599/2501.Longest Square Streak in an Array/README_EN.md b/solution/2500-2599/2501.Longest Square Streak in an Array/README_EN.md index f2f2104866930..d09bbffa6e2d2 100644 --- a/solution/2500-2599/2501.Longest Square Streak in an Array/README_EN.md +++ b/solution/2500-2599/2501.Longest Square Streak in an Array/README_EN.md @@ -287,6 +287,46 @@ func longestSquareStreak(nums []int) (ans int) { } ``` +#### TypeScript + +```ts +function longestSquareStreak(nums: number[]): number { + const set = new Set(nums); + const cache = new Map(); + const dfs = (x: number): number => { + if (cache.has(x)) return cache.get(x)!; + if (!set.has(x)) return 0; + cache.set(x, 1 + dfs(x ** 2)); + return cache.get(x)!; + }; + + for (const x of set) dfs(x); + const ans = Math.max(...cache.values()); + + return ans > 1 ? ans : -1; +} +``` + +#### JavaScript + +```js +function longestSquareStreak(nums) { + const set = new Set(nums); + const cache = new Map(); + const dfs = x => { + if (cache.has(x)) return cache.get(x); + if (!set.has(x)) return 0; + cache.set(x, 1 + dfs(x ** 2)); + return cache.get(x); + }; + + for (const x of set) dfs(x); + const ans = Math.max(...cache.values()); + + return ans > 1 ? ans : -1; +} +``` + diff --git a/solution/2500-2599/2501.Longest Square Streak in an Array/Solution2.js b/solution/2500-2599/2501.Longest Square Streak in an Array/Solution2.js new file mode 100644 index 0000000000000..66ec5cc32c8a0 --- /dev/null +++ b/solution/2500-2599/2501.Longest Square Streak in an Array/Solution2.js @@ -0,0 +1,15 @@ +function longestSquareStreak(nums) { + const set = new Set(nums); + const cache = new Map(); + const dfs = x => { + if (cache.has(x)) return cache.get(x); + if (!set.has(x)) return 0; + cache.set(x, 1 + dfs(x ** 2)); + return cache.get(x); + }; + + for (const x of set) dfs(x); + const ans = Math.max(...cache.values()); + + return ans > 1 ? ans : -1; +} diff --git a/solution/2500-2599/2501.Longest Square Streak in an Array/Solution2.ts b/solution/2500-2599/2501.Longest Square Streak in an Array/Solution2.ts new file mode 100644 index 0000000000000..2546d039a7d4c --- /dev/null +++ b/solution/2500-2599/2501.Longest Square Streak in an Array/Solution2.ts @@ -0,0 +1,15 @@ +function longestSquareStreak(nums: number[]): number { + const set = new Set(nums); + const cache = new Map(); + const dfs = (x: number): number => { + if (cache.has(x)) return cache.get(x)!; + if (!set.has(x)) return 0; + cache.set(x, 1 + dfs(x ** 2)); + return cache.get(x)!; + }; + + for (const x of set) dfs(x); + const ans = Math.max(...cache.values()); + + return ans > 1 ? ans : -1; +}