宁夏商擎网站建设,长沙的互联网网站公司,wordpress客户端无法上传图片,做网站推广选哪家1.买卖股票的最佳时机
给定一个数组 prices #xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔…1.买卖股票的最佳时机
给定一个数组 prices 它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润返回 0 。 解法遍历数组每一个元素设置一个变量为minPrice为整数类型最大数让每个元素跟他比较
假如元素把比他小赋值给该变量否则让该元素减去minPrice当前最小元素如果比已知的最大利润大那就赋值给最大利润
class Solution {public int maxProfit(int[] prices) {int max0;int minPriceInteger.MAX_VALUE;for(int i0;iprices.length;i){if(prices[i]minPrice){minPriceprices[i];}else if(prices[i]-minPricemax){maxprices[i]-minPrice;}}return max;}
}
2.买卖股票的最佳时机Ⅱ
给你一个整数数组 prices 其中 prices[i] 表示某支股票第 i 天的价格。
在每一天你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买然后在 同一天 出售。
返回 你能获得的 最大 利润 。 解法
由于股票的购买没有限制因此整个问题等价于寻找 x 个不相交的区间 (li,ri] 使得如下的等式最大化res (prices[3] - prices[2]) (prices[2] - prices[1]) (prices[1] - prices[0]) prices[3] - prices[0] 。
class Solution {public int maxProfit(int[] prices) {int profit0;for(int i1;iprices.length;i){if(prices[i]-prices[i-1]0){profitprofitprices[i]-prices[i-1];}}return profit;}
}
3.跳跃游戏
给你一个非负整数数组 nums 你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标如果可以返回 true 否则返回 false 。 解法
每次取最大跳跃步数取最大覆盖范围整体最优解最后得到整体最大覆盖范围看是否能到终点。
class Solution {public boolean canJump(int[] nums) {int nnums.length;int most0;for(int i0;in;i){if(imost){mostMath.max(most,inums[i]);if(mostn-1){return true;}}}return false;}}