题目1描述:假设你有一个数组,其中第i个元素表示某只股票在第i天的价格。
设计一个算法来寻找最大的利润。你可以完成任意数量的交易(例如,多次购买和出售股票的一股)。但是,你不能同时进行多个交易(即,你必须在再次购买之前卖出之前买的股票)。
思路:判断相邻是否递增,因为连续递增可以合起来看为一次买入卖出操作,所以统计所有递增量即可。
import java.util.*; public class Solution { /** * * @param prices int整型一维数组 * @return int整型 */ public int maxProfit (int[] prices) { // write code here if(prices.length<2||prices==null) return 0; int res=0; for(int i=1;i<prices.length;i++){ if(prices[i]-prices[i-1]>0) res+=prices[i]-prices[i-1]; } return res; } }
题目2描述:假设你有一个数组,其中第i个元素是某只股票在第i天的价格。如果你最多只能完成一笔交易(即买一股和卖一股股票),设计一个算法来求最大利润。
思路:找后面售价与前面售价的差值。
代码:
import java.util.*; public class Solution { /** * * @param prices int整型一维数组 * @return int整型 */ public int maxProfit (int[] prices) { // write code here if(prices.length<2||prices==null) return 0; int res=0; for(int i=0;i<prices.length;i++) for(int j=i;j<prices.length;j++){ if(prices[j]-prices[i]>res) res=prices[j]-prices[i]; } return res; } }