public static int MaxDiff(int[] arr) { if(arr==null || arr.length<2) return -1; //error int min=arr[0]; //最大利润可以是负数,只要亏损最小就行 int maxDiff=arr[1]-min; for(int i=1;i<arr.length;i++) { if(arr[i-1]<min) //保存“之前”最小数字 min=arr[i-1]; if(arr[i]-min>maxDiff) maxDiff=arr[i]-min; } //默认不能亏本,代码简单,上面复杂的代码注意细节 // int maxDiff=0; // for(int i=1;i<arr.length;i++) { // if(arr[i]<min) // min=arr[i]; // else if(arr[i]-min>maxDiff) // maxDiff=arr[i]-min; // } return maxDiff; }