求陣列左邊減去右邊數值的最大差值,如下面的陣列,a = ;組大差值為11-1 為10;
#include using namespace std;
//求陣列左邊減去右邊數值的最大差值,例如下面的陣列,組大差值為11-1 為10,這個題目解法挺多,自己想到乙個簡單的演算法,記錄下
//可以申請乙個同樣大小的陣列b,從右邊開始初始化,第i個值為從i到陣列後的最小值,這樣初始化時候可以用到動態規劃法,i與第i+1個比較就可以找到這個值
//然後求出a[i]-b[i]的最大值就可以了。其實這個方法不用申請陣列b,用乙個數值記錄當前位置到最後的最小值就可以了,再用乙個變數儲存最大差值
//從後到前遍歷一遍,就求出來了**如下
int maxdiff1(int *a, int len)
return maxdiff;
}//這個題目還可以轉化下,構造乙個陣列b,b[0] = a[0]-a[1],b[1] = a[1]-a[2]...b[n]=a[n]-a[n+1];
//b[0]+b[1] = a[0]-a[2]..b[m]+..b[n] = a[m] - a[n+1];這樣就轉化成了求,陣列最大子陣列和的問題了
int maxdiff2(int *a, int len)
}int temp_sub = sum;
for(int i=0; i<=end; i++)
}delete b;
return sum;
}int main()
; int len = 10;
cout<
求左邊數字減去右邊數字的最大差 動態規劃
題目 在陣列中,數字減去它右邊的數字得到乙個數對之差。求所有數對之差的最大值。例如在陣列中,數對之差的最大值是11,是16減去5的結果。動態規劃 變數 i為陣列索引,max為i之前的最大值 不包括i maxdiff為i之前的數減去i得到的最大差。解釋 當i時,maxdiff max data i 即...
陣列中的最大差值
有乙個長為n的陣列a,求滿足0 a b給定陣列 a及它的大小 n,請返回最大差值。解析 貪心思想,時間複雜度為o n 設定當前陣列中的最小值為min value。初始化為arr 0 然後依次遍歷陣列中的每乙個元素,當遍歷到乙個元素時求出當前元素與之前的min value差值,用該差值和當前最大的差值...
無序陣列求最大差值
乙個陣列a 0.n 1 求a j a i 的最大值,其中icite 第一種方法 從左往右求下標0到 k 1 的最小值min 從右往左求 下標k到n 1 的最大值max,對於每個k都有乙個max min的值,最後求這個值的最大值即可。例如陣列 4 5 2 6 3 1 k 1 2 3 4 5 min 4...