diff --git a/climbing-stairs/Totschka.ts b/climbing-stairs/Totschka.ts new file mode 100644 index 000000000..9b4834b6d --- /dev/null +++ b/climbing-stairs/Totschka.ts @@ -0,0 +1,20 @@ +// https://leetcode.com/problems/climbing-stairs/ +/** + * @SC `O(1)` + * @TC `O(n)` + */ +function climbStairs(n: number): number { + if (n <= 2) { + return n; + } + + let prev1 = 1; + let prev2 = 2; + + for (let i = 2; i < n; i++) { + let temp = prev1; + prev1 = prev2; + prev2 = temp + prev2; + } + return prev2; +} diff --git a/valid-anagram/Totschka.ts b/valid-anagram/Totschka.ts new file mode 100644 index 000000000..fc9f23372 --- /dev/null +++ b/valid-anagram/Totschka.ts @@ -0,0 +1,34 @@ +// https://leetcode.com/problems/valid-anagram/ + +/** + * @SC `O(N)` + * @TC `O(N)` + */ +namespace use_hashmap { + function isAnagram(s: string, t: string): boolean { + if (s.length !== t.length) { + return false; + } + const counter = {}; + for (const char of s) { + counter[char] = (counter[char] || 0) + 1; + } + for (const char of t) { + if (!counter[char]) { + return false; + } + counter[char] = counter[char] - 1; + } + return true; + } +} + +/** + * @SC `O(N)` + * @TC `O(Nlog(N))` + */ +namespace naive_approach { + function isAnagram(s: string, t: string): boolean { + return [...s].sort().join('') === [...t].sort().join(''); + } +}