????學習目標:
每天復習代碼隨想錄上的題目2-3道算法(時間充足可以繼續)
今日碎碎念:
1)進入貪心與dp專題,過完準備二刷,以及刷劍指offer。
2)這兩天沒更新是休息一下,然后也在學點別的課程來優化一下簡歷
3)堅持住吧,秋招馬上來了!
力扣刷題
算法
力扣70:70. 爬樓梯
解答思路:
? ? ? ? 1)一道簡單dp
class Solution {public int climbStairs(int n) {if(n<=1) return 1;int[] dp = new int[n+1];dp[0] = 0;dp[1] = 1;dp[2] = 2;for(int i = 3;i<=n;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
}
?力扣746:746. 使用最小花費爬樓梯
解答思路:
? ? ? ? 1)本題方程不難想,初始化,0和1的花費都是0,遞歸方程的話根據題意找最小即可
class Solution {public int minCostClimbingStairs(int[] cost) {//dp:爬到該階梯所需要的最小花費int len = cost.length;int[] dp = new int[len+1];dp[0] = 0;dp[1] = 0;for(int i = 2;i<=len;i++){dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[len];}
}
?力扣62:62. 不同路徑
class Solution {public int uniquePaths(int m, int n) {//初始化int[][]dp = new int[m][n];//初始化:本題找的是不同路徑,那么對于只能向下或者向右移動的情況下// 對于初始化那么,走完最左一列或者最上一列的不同路徑都是1,因為只有一種路徑for(int i = 0;i<m;i++) dp[i][0] = 1;for(int j = 0;j<n;j++) dp[0][j] = 1;//遞歸方程:當前格的不同路徑總和為:走到上方格子路徑總數+走到左方格子路徑總數for(int i = 1;i<m;i++){for(int j = 1;j<n;j++){dp[i][j] = dp[i-1][j] + dp[i][j-1];}}return dp[m-1][n-1];}
}