问题描述:
代码:
class Solution {
public int maxScoreSightseeingPair(int[] values) {
int ans = 0, mx = values[0] + 0;
for (int j = 1; j < values.length; ++j) {
ans = Math.max(ans, mx + values[j] - j);
// 边遍历边维护
mx = Math.max(mx, values[j] + j);
}
return ans;
}
}
思路:
问题描述:
代码:
public class Solution {
public int maxProfit(int prices[]) {
int r1=0,buy=prices[0],max=0;
for(int i=0;i<prices.length;i++){
if(prices[i]<buy)
buy=prices[i];
max=Math.max(prices[i]-buy,max);
}
return max;
}
}
思路:
动态规划
问题描述:
代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
int dp0 = 0, dp1 = -prices[0];
for (int i = 1; i < n; ++i) {
int newDp0 = max(dp0, dp1 + prices[i]);
int newDp1 = max(dp1, dp0 - prices[i]);
dp0 = newDp0;
dp1 = newDp1;
}
return dp0;
}
};
思路: