70. 爬楼梯
- 题号:70
- 来源:LeetCode
- 难度:简单
- 标签:
dp - 语言:TypeScript
- 解法:2 个
- 作者:lmliheng
- 最近更新:2026-09-27
解法一
TypeScript · O(n) 时间 · O(n) 空间 · 更新于 2026-09-27
dp 递推 f(n)=f(n-1)+f(n-2)
typescript
/**
* @difficulty easy
* @tags dp
* @time O(n)
* @space O(n)
* @note dp 递推 f(n)=f(n-1)+f(n-2)
* @70. 爬楼梯
*/
let n: number = 10
// (1/Math.sqrt(5))*(pow((1+Math.sqrt(5))/2,n+1)-pow((1-Math.sqrt(5))/2,n+1))
console.log(Math.floor((1/Math.sqrt(5))*(Math.pow((1+Math.sqrt(5))/2,n+1)-Math.pow((1-Math.sqrt(5))/2,n+1))))
/**
* @param {number} n
* @return {number}
*/
function climbStairs(n: number): number {
// dp dp[n-1]表示n阶楼梯到达的方法数,n=1时
let dp: number[] = new Array(n)
dp[0] = 1
dp[1] = 2
for(let i=2;i<n;i++){
dp[i] = dp[i-1] + dp[i-2]
}
return dp[n-1]
}
console.log(climbStairs(10))
export {};解法二 · TypeScript
TypeScript · 更新于 2026-09-27
文件内是简化路径的解法,本题未实现
typescript
/**
* @difficulty easy
* @tags dp
* @note 文件内是简化路径的解法,本题未实现
* @70. 爬楼梯(解法二)
*/
/**
* @param {string} path
* @return {string}
*/
function simplifyPath(path: string): string {
let pathArr: string[] = path.split("/")
// . 和 //可以处理
// console.log(pathArr)
let pathArr_1: string[] = pathArr.filter(item => {
if(item !== "" && item !== "."){
return item
}
}) as string[]
// 处理/../
for(let i = 0; i < pathArr_1.length; i++){
if(pathArr_1[i] === '..' ){
console.log(pathArr_1)
if(pathArr_1[i-1] !== undefined){
pathArr_1.splice(i-1, 2)
console.log("删除后", pathArr_1)
// 需要更新i
i = i - 2
} else {
pathArr_1.splice(i, 1)
i = i - 1
}
}
}
return '/' + pathArr_1.join('/')
}
// console.log(simplifyPath("./home/../foo/"))
// console.log(simplifyPath('/home//foo/'))
// console.log(simplifyPath("/home/user/Documents/../Pictures"))
// console.log(simplifyPath("/.../a/../b/c/../d/./"))
// console.log(simplifyPath("/../"))
//console.log(simplifyPath('/a/./b/../../c/'))
console.log(simplifyPath('/home/../../..'))
export {};源码:ts/leetcode/70. 爬楼梯(解法二).ts
在 GitHub 上查看题目所在目录:lmliheng/algorithm