Skip to content

Commit d7de405

Browse files
authored
Merge pull request DaleStudy#2430 from j2h30728/main
[j2h30728] Week 2 solutions
2 parents 6cd5caa + 6154fb4 commit d7de405

4 files changed

Lines changed: 66 additions & 0 deletions

File tree

climbing-stairs/j2h30728.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function climbStairs(n: number): number {
2+
if (n === 0 || n === 1) {
3+
return 1;
4+
}
5+
6+
const memo: number[] = [];
7+
memo[0] = memo[1] = 1;
8+
9+
for (let i = 2; i <= n; i++) {
10+
memo[i] = memo[i - 1] + memo[i - 2];
11+
}
12+
13+
return memo[n];
14+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function productExceptSelf(nums: number[]): number[] {
2+
const length = nums.length;
3+
const result = new Array(nums.length).fill(1);
4+
5+
let leftTemp = 1;
6+
for (let i = 0; i < length; i++) {
7+
result[i] = leftTemp;
8+
leftTemp *= nums[i];
9+
}
10+
11+
let rightTemp = 1;
12+
for (let i = length - 1; i >= 0; i--) {
13+
result[i] *= rightTemp;
14+
rightTemp *= nums[i];
15+
}
16+
17+
return result;
18+
}

valid-anagram/j2h30728.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function isAnagram(s: string, t: string): boolean {
2+
const obj = {};
3+
for (let i = 0; i < s.length; i++) {
4+
obj[s[i]] = (obj[s[i]] || 0) + 1;
5+
}
6+
7+
for (let i = 0; i < t.length; i++) {
8+
obj[t[i]] -= 1;
9+
}
10+
11+
return Object.values(obj).filter((value) => value !== 0).length === 0;
12+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class TreeNode {
2+
val: number;
3+
left: TreeNode | null;
4+
right: TreeNode | null;
5+
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
6+
this.val = val === undefined ? 0 : val;
7+
this.left = left === undefined ? null : left;
8+
this.right = right === undefined ? null : right;
9+
}
10+
}
11+
12+
function isValidBST(root: TreeNode | null): boolean {
13+
function valid(node, min, max) {
14+
if (!node) return true;
15+
16+
if (node.val <= min || node.val >= max) return false;
17+
18+
return valid(node.left, min, node.val) && valid(node.right, node.val, max);
19+
}
20+
21+
return valid(root, -Infinity, Infinity);
22+
}

0 commit comments

Comments
 (0)