leetcode Best Time to Buy and Sell Stock II

贪心算法--计算股票买卖(II)题目:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/

股票买卖(II)可以实现多次买卖股票

贪心思想:如果明天的价格比今天的价格高,就可以今天买入,明天卖出。如果后天比明天价格高,明天买入,后天卖出。

同一天可以买入,也可以卖出。

/**
	 * 贪心算法
	 * @param prices
	 * @return
	 */
	public static int maxProfit(int[] prices) {
		int temp=0;
		int diff=0;
		for(int i=1;i<prices.length;i++){
			if(prices[i]-prices[i-1]>0){
				diff=prices[i]-prices[i-1];
				temp+=diff;
			}
		}
		return temp;
	}

在每一天不能同时进行买卖。

解决方法:先寻找递减的局部最小值,再寻找递增的局部最大值,计算差值累加。

/**
	 * 先寻找递减的局部最小值,再寻找递增的局部最大值,计算差值累加。
	 * @param prices
	 * @return
	 */
	public static int maxProfit2(int[] prices) {
		int i=0;
		int buy;
		int sale;
		int temp=0;
		while(i<prices.length){
			while(i+1<prices.length && prices[i+1]<prices[i]){
				i++;
			}
			buy=i;
			i++;

			while(i<prices.length && prices[i]>prices[i-1]){
				i++;
			}
			sale=i-1;
			temp+=prices[sale]-prices[buy];
		}
		return temp;
	}

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/84798312