LeetCode - 주식 거래 의 최대 이윤

제목: 베 스 트 타임 스톡 구 매 및 판매 II
만약 에 하나의 배열 이 있다 고 가정 하면 그의 i 번 째 요 소 는 주어진 주식 이 i 일 째 가격 이다.
알고리즘 을 설계 하여 가장 큰 이윤 을 찾다.너 는 가능 한 한 많은 거래 를 완성 할 수 있다.그러나 여러 거래 에 동시에 참여 할 수 는 없다.
생각:
가장 큰 이윤 을 찾 는 것 이기 때문에 다음 날 의 가격 이 오늘 의 가격 보다 크 면 차액 으로 총 이윤 에 계산 할 수 있다.
최종 코드:
public class MaxProfile {

    @Test
    public void test() {
        Assert.assertEquals(0, maxProfit(new int[]{}));
        Assert.assertEquals(0, maxProfit(new int[]{10, 1}));
        Assert.assertEquals(9, maxProfit(new int[]{1, 10}));
        Assert.assertEquals(9, maxProfit(new int[]{1, 10, 10}));
        Assert.assertEquals(9, maxProfit(new int[]{1, 10, 10, 10, 10}));
        Assert.assertEquals(9, maxProfit(new int[]{1, 1, 10, 10}));
        Assert.assertEquals(18, maxProfit(new int[]{1, 1, 10, 10, 1, 10}));
        Assert.assertEquals(9, maxProfit(new int[]{1, 1, 10, 10, 1, 1, 1, 0}));
        Assert.assertEquals(17, maxProfit(new int[]{10, 0, 1, 10, 3, 5, 6, 5, 6, 4, 7, 1}));
    }

    public int maxProfit(int[] prices) {
        if (prices == null || prices.length < 2) {
            return 0;
        }

        int sum = 0;

        for (int i = 0; i < prices.length - 1; i++) {
            if (prices[i + 1] > prices[i]) {
                sum += prices[i + 1] - prices[i];
            }
        }

        return sum;
    }
}

좋은 웹페이지 즐겨찾기