diff --git a/climbing-stairs/gitsunmin.ts b/climbing-stairs/gitsunmin.ts new file mode 100644 index 000000000..e87319fa4 --- /dev/null +++ b/climbing-stairs/gitsunmin.ts @@ -0,0 +1,17 @@ +/** + * https://leetcode.com/problems/climbing-stairs + * time complexity : O(n) + * space complexity : O(1) + */ + +export const upStairs = (n: number): number => { + let [l, r] = [1, 2]; + for (let i = 3; i <= n; i++) [l, r] = [r, l + r]; + + return r; +}; + +export function climbStairs(n: number): number { + if (n <= 2) return n; + return upStairs(n); +}; diff --git a/product-of-array-except-self/gitsunmin.ts b/product-of-array-except-self/gitsunmin.ts new file mode 100644 index 000000000..3d06fa5c3 --- /dev/null +++ b/product-of-array-except-self/gitsunmin.ts @@ -0,0 +1,23 @@ +/** + * https://leetcode.com/problems/product-of-array-except-self + * time complexity : O(n) + * space complexity : O(1) + */ +function productExceptSelf(nums: number[]): number[] { + const n = nums.length; + const answer = new Array(n).fill(1); + + let leftProduct = 1; + for (let i = 0; i < n; i++) { + answer[i] = leftProduct; + leftProduct *= nums[i]; + } + + let rightProduct = 1; + for (let i = n - 1; i >= 0; i--) { + answer[i] *= rightProduct; + rightProduct *= nums[i]; + } + + return answer; +} diff --git a/two-sum/gitsunmin.ts b/two-sum/gitsunmin.ts new file mode 100644 index 000000000..23863c12d --- /dev/null +++ b/two-sum/gitsunmin.ts @@ -0,0 +1,16 @@ +/** + * https://leetcode.com/problems/two-sum + * time complexity : O(n) + * space complexity : O(n) + */ +function twoSum(nums: number[], target: number): number[] { + const m = new Map(); + + for (let i = 0; i < nums.length; i++) { + if (m.has(nums[i])) + return [m.get(nums[i]), i]; + m.set(target - nums[i], i); + } + + return [-1, -1]; +};