剣は動的計画法の8日目のオファーを指します(単純)
剣はオファー10を指します-I。フィボナッチ数列
トピックのアイデア
明らかにそれは再帰的な関係です、ただそれを直接書いてください
トピックコード
c++コード
class Solution {
private:
int mod = 1e9+7;
int f[110];
public:
int fib(int n) {
f[0]=0,f[1]=1;
for(int i=2;i<=n;i++){
f[i] = (f[i-1] + f[i-2])%mod;
}
return f[n];
}
};
Pythonコード
class Solution:
def fib(self, n: int) -> int:
a = 0
b = 1
c = 0
mod = 1e9+7
if not n :
return a
elif n==1 :
return b
else:
for i in range(2,n+1):
c = (a+b)%mod
a = b%mod
b = c%mod
return int(c)
剣はオファー10を指します-II。カエルのジャンプステップ
トピックのアイデア
前のトピックと同様です。それはnステップに過ぎません。n-1番目とn-2番目のステップからしか上がれません。
トピックコード
c++コード
class Solution {
private:
int mod = 1e9+7;
int f[110];
public:
int numWays(int n) {
f[0]=1,f[1]=1,f[2]=2;
for(int i=2;i<=n;i++){
f[i] = (f[i-1] + f[i-2])%mod;
}
return f[n];
}
};
Pythonコード
class Solution:
def numWays(self, n: int) -> int:
a = 1
b = 1
c = 0
mod = 1e9+7
if not n :
return a
elif n==1 :
return b
else:
for i in range(2,n+1):
c = (a+b)%mod
a = b%mod
b = c%mod
return int(c)
剣はオファー63を指します。株式の最大利益
トピックのアイデア
典型的な問題、2つの配列、最初のグループは株を購入した後の最大利益を表し、2番目のグループは売却後の最大利益を表します
トピックコード
c++コード
class Solution {
public:
int maxProfit(vector<int>& prices) {
int s[100010],b[100010];
int n = prices.size();
for(int i=0;i<100010;i++){
s[i]=-100000000;
b[i]=0;
}
for(int i=1;i<=n;i++){
s[i]=max(s[i-1],0-prices[i-1]);
b[i]=max(b[i-1],s[i]+prices[i-1]);
//cout<<s[i]<<" "<<b[i]<<endl;
}
return b[n];
}
};
Pythonコード
class Solution:
def maxProfit(self, prices: List[int]) -> int:
s = [-1000000]*100010
b = [0]*100010
n = len(prices)
for i in range(1,n+1):
s[i] = max(s[i-1],0-prices[i-1])
b[i] = max(b[i-1],s[i]+prices[i-1])
return b[n]
この記事が私の友達に役立つなら、私はいいねとサポートをしたいと思います〜ありがとうございました〜