劍指Offer-第8天 動態規劃(簡單)
阿新 • • 發佈:2022-05-10
第一題
題目連結:https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/
個人題解:迭代即可,可以減少空間複雜度,只需要使用常數級別的空間即可。
程式碼:
const int mod=1e9+7; class Solution { public: int fib(int n) { if(n<2) return n; int a=0,b=0,c=1; for(int i=2;i<=n;i++){ a=b; b=c; c=(a+b)%mod; } return c; } };
執行截圖:
第二題
題目連結:https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/
個人題解:迭代即可,和上一題幾乎一樣
程式碼:
const int mod=1e9+7; class Solution { public: int numWays(int n) { if(n==0) return 1; if(n<=3) return n; int a=0,b=0,c=1; for(int i=1;i<=n;i++){ a=b; b=c; c=(a+b)%mod; } return c; } };
執行截圖:
第三題
題目連結:https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/
個人題解:動態規劃,找到現在為止的最小值與當前值的最大差值即可。
程式碼:
class Solution { public: int maxProfit(vector<int>& prices) { int maxn=0,minn=INT_MAX; for(auto x:prices){ maxn=max(maxn,x-minn); minn=min(minn,x); } return maxn; } };
執行截圖: