122. 买卖股票的最佳时机 II
这道题自己完整做出来了。
决定今天买的基准是 明天的价格不小于今天的价格。
决定今天卖的基准是 明天的价格不大于今天的价格。
public class Solution {
public int MaxProfit(int[] prices) {
bool hasStock = false;
int sum = 0;
int pre = 0;
for(int i = 0;i < prices.Length-1;i++)
{
if(!hasStock && prices[i+1]>=prices[i])
{
hasStock = !hasStock;
pre = prices[i];
}
if(hasStock && prices[i+1]<=prices[i])
{
hasStock = !hasStock;
sum+=(prices[i]-pre);
}
}
if(hasStock && prices[prices.Length-1] > prices[prices.Length-2])
{
sum+=(prices[prices.Length-1]-pre);
}
return sum;
}
}
以下为卡哥的代码,更简化。
public class Solution {
public int MaxProfit(int[] prices) {
int sum = 0;
for(int i = 1;i < prices.Length;i++)
{
sum+= (prices[i]-prices[i-1]) > 0 ? prices[i]-prices[i-1] : 0;
}
return sum;
}
}
55.跳跃游戏
我原来的思路理解错了, 每次直接跳到最大步数,但其实不一定需要跳最大步数。以下为我原来思路代码。
public class Solution {
public bool CanJump(int[] nums) {
int i = 0;
while(i != nums.Length - 1 && i < nums.Length)
{
if(nums[i] == 0) break;
i += nums[i];
}
if(i >= nums.Length - 1) return true;
else return false;
}
}
public class Solution {
public bool CanJump(int[] nums) {
int cover = 0;
for(int i = 0;i <= cover;i++)
{
cover = i+nums[i] > cover ? i+nums[i] : cover;
if(cover >= nums.Length - 1) return true;
}
return false;
}
}