网站不同时期的优化工作该怎么做,活动推广方案怎么写,网站建设方案,百度推广手机网站70
70
题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢#xff1f;
示例 1#xff1a;
输入#xff1a;n 2 输出#xff1a;2 解释#xff1a;有两种方法可以爬到楼顶。
1 阶 1 阶2 阶 示例 …70
70
题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢
示例 1
输入n 2 输出2 解释有两种方法可以爬到楼顶。
1 阶 1 阶2 阶 示例 2
输入n 3 输出3 解释有三种方法可以爬到楼顶。
1 阶 1 阶 1 阶1 阶 2 阶2 阶 1 阶
提示
1 n 45
题解
class Solution {public int climbStairs(int n) {// int[] dp new int[n 2];// dp[0] 1;// dp[1] 1;// for (int i 2; i n; i) {// dp[i] dp[i - 1] dp[i - 2];// } // return dp[n];//找到规律不难发现为斐波那契数列int sum, a 1, b 1;for (int i 2; i n; i) {sum a b;a b;b sum;}return b;}
}746
746
题目
给你一个整数数组 cost 其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
示例 1
输入cost [10,15,20] 输出15 解释你将从下标为 1 的台阶开始。
支付 15 向上爬两个台阶到达楼梯顶部。 总花费为 15 。 示例 2
输入cost [1,100,1,1,1,100,1,1,100,1] 输出6 解释你将从下标为 0 的台阶开始。
支付 1 向上爬两个台阶到达下标为 2 的台阶。支付 1 向上爬两个台阶到达下标为 4 的台阶。支付 1 向上爬两个台阶到达下标为 6 的台阶。支付 1 向上爬一个台阶到达下标为 7 的台阶。支付 1 向上爬两个台阶到达下标为 9 的台阶。支付 1 向上爬一个台阶到达楼梯顶部。 总花费为 6 。
提示
2 cost.length 1000 0 cost[i] 999
题解
class Solution {public int minCostClimbingStairs(int[] cost) {// int n cost.length;// int[] minCost new int[n 2];// minCost[0] 0;// minCost[1] Math.min(cost[0],cost[1]);// for (int i 2; i n; i) {// minCost[i] Math.min(minCost[i - 1] cost[i],minCost[i - 2] cost[i - 1]);// } // return minCost[n - 1];int minCost0 0;int minCost1 Math.min(cost[0],cost[1]);//如果长度小于等于2 就直接返回minCost1int ans cost.length 2 ? minCost1 : 0;//如果是花费minCost[i-1]到达第i级台阶 则总花费加上cost[i]//如果是花费minCost[i-2]到达第i级台阶 则总花费加上cost[i-1]for (int i 2; i cost.length; i) {ans Math.min(minCost1 cost[i], minCost0 cost[i - 1]);minCost0 minCost1;minCost1 ans;}return ans;}
}class Solution {public int minCostClimbingStairs(int[] cost) {// int n cost.length;// int[] dp new int[n];//第i个阶梯最小花费// dp[0] cost[0];// dp[1] cost[1];// for (int i 2; i n; i) {// dp[i] Math.min(dp[i - 1],dp[i - 2]) cost[i];// }// return Math.min(dp[n - 1],dp[n -2]);int n cost.length;//你会发现dp数组用的cost的数据而且答案并没有涉及到cost既然如此直接使用costfor (int i 2; i n; i) {cost[i] Math.min(cost[i - 1],cost[i - 2]) cost[i];}return Math.min(cost[n - 1],cost[n - 2]);}
}