陣列中後面元素與前面元素的最大差值

2022-05-02 16:57:13 字數 1121 閱讀 8899

求陣列中兩個元素差的最大值(後面的元素減去前面的元素)o(n)時間複雜度o(1)空間複雜度

題目:在陣列中找到兩個元素,計算後面的元素減去前面的元素的差。求出所有差的最大值。

(你可以認為你在**票,****和賣出**就是你的盈利)

//陣列a[0...n] , 對於0<=i maxdiff)//獲取最大差值

}return maxdiff;

}//前面的數減去後面的數

public static int maxdifference1(int a)

if(maxleft - a[i] > maxdiff)//獲取最大差值

}return maxdiff;

}//分治法: 最大值和最小值都在左邊陣列中, 最大值最小值都在右邊陣列中, 最大值最小值分別位於左邊陣列或者右邊陣列中

//o(nlgn)

public static int maxdifference3(int a)

//轉換法

/*1、有一陣列array[n],陣列長度為n

2、構建乙個長度為n-1的輔助陣列array2[n-1],且array2[i] = array[i] - array[i+1]; (0<=ii),即array[i] + array2[i+1] + ... + array2[j],

有(array[i] - array[i+1]) + (array[i+1] -array[i+2]) + ... + (array[j] - array[j+1]) = array[i] - array[j+1]

分析至此,發現陣列中最大的數對之差(即array[i] - array[j+1])其實是輔助陣列array2中最大的連續子陣列之和。

*/public static int maxdifference4(int a)

int sum = 0;

for (int i = 0; i < temp.length; i ++)else

}return sum;

}//暴力搜尋 o(n^2)

public static int maxdifference2(int a)}}

return max;

}//尋找下標差值最大的兩個數

//動態規劃

}

39 線性表中元素前面負數後面正數

已知線性表按順序儲存於記憶體,每個元素都是整數,用最少時間把所有值為負數的元素移到全部正數值元素前面的演算法。include using namespace std define n 5 設定線性表的閾值 typedef struct seqlist 定義乙個線性 順序表 void print se...

shell 找出陣列元素中的最大值

shell 如何比較出陣列中所有元素中的最大值?如 array 111 222 333 444 555 999 888 777 666 怎麼找出最大的那個元素999呢?思路 先設定乙個值max 即陣列的第乙個元素,再使用for迴圈,拿第乙個元素與第二個.比較,當有乙個元素比如3號元素比array 0...

陣列中的第k個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5 示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 說明 你可以假設 k 總是有效的,且 1...