My Solution to A Distance Maximizing Problem
2542 ワード
アルゴリズム思想の参考:http://blog.csdn.net/clamreason/article/details/7904062
2つの要素から始まる初期条件として、1つ1つの要素が既存の配列に追加され、2つの変数が保存され、1つはcurrMinであり、現在処理されているサブ配列の最小要素であり、1つはmaxDiffであり、現在処理されているサブ配列の最大数対の差である.現在追加されている要素がminより小さい場合、minが更新され、現在追加されている要素からminがmaxDiffより大きい場合、maxDiffが更新されます.
EOF
2つの要素から始まる初期条件として、1つ1つの要素が既存の配列に追加され、2つの変数が保存され、1つはcurrMinであり、現在処理されているサブ配列の最小要素であり、1つはmaxDiffであり、現在処理されているサブ配列の最大数対の差である.現在追加されている要素がminより小さい場合、minが更新され、現在追加されている要素からminがmaxDiffより大きい場合、maxDiffが更新されます.
/*
LeetCode: A Distance Maximizing Problem
return value: max difference
parameters: arr - the array, range [0, len-1]
len - the length of the array
*/
int MaxDifference(int arr[], int len)
{
if (!arr || len < 2)
return 0;
int currMin = arr[0] < arr[1] ? arr[0] : arr[1]; //current min
int maxDiff = arr[1] - arr[0]; //max difference
for (int i = 2; i < len; i++)
{
if (maxDiff < arr[i] - currMin)
maxDiff = arr[i] - currMin;
if (arr[i] < currMin)
currMin = arr[i];
}
return maxDiff;
}
EOF