贪心算法: 根据输入数组,用后一个值减去前一值得到差值,找出最大的差值并返回(注意先后顺序)
package algorithm;
import java.util.Arrays;
public class Greedy {
public static void main(String[] args) {
int[] prices = {7, 9, 1, 5, 3, 6, 4};
int max = getMaxProfit(prices);
// 5
System.out.println(max);
}
/**
* Run process :
* {7 9 1 5 3 6 4}
* minPrice=9 7 1
* maxProfit=0 2 4 5
*
*/
public static int getMaxProfit(int[] arr) {
if (null == arr) {
return 0;
}
int maxProfit = 0;
// maximum value instead of minimum
int minPrice = Arrays.stream(arr).max().getAsInt();
for (int i = 0; i < arr.length; i++) {
if (arr[i] < minPrice) {
minPrice = arr[i];
} else if (arr[i] - minPrice > maxProfit) {
maxProfit = arr[i] - minPrice;
}
}
return maxProfit;
}
}