在乙個陣列中找差值最大數對,輸出最大差值

2021-07-11 22:50:08 字數 799 閱讀 8356

題目:乙個陣列,找乙個數對,使得兩個數對之差最大,並且較大數在較小數之前,要求時間複雜度為o(n)

解決方法:

動態規劃,額外定義兩個陣列,temp、max

temp[i]用來儲存,從開始到下標為i的元素位置,最大數對之差

max[i]用來儲存,從開始到下標為i的元素位置,最大值

i=0時:

temp[i]=0;

max[i]=a[i];

i!=0時:

temp[i+1]=max;

max[i+1]=max;

實現**如下:

public class test;

temp=new int [a.length];

max=new int [a.length];

system.out.println(find(a));

} public static int find(int a)else

}}

時間複雜度為:o(n)

空間複雜度為:o(n)

找出乙個陣列裡面前K個最大數

問題 找出乙個陣列裡面前k個最大數。解法 1.第一感覺就是對陣列進行降序全排序,然後返回前k個元素,即是需要的k個最大數。排序演算法的選擇有很多,考慮陣列的無序性,可以考慮選擇快速排序演算法,其平均時間複雜度為o nlogn 具體 實現可以參見相關資料結構與演算法書籍。2.觀察第一種演算法,問題只需...

乙個陣列中找重複數

乙個大小為n的陣列,裡面的數都屬於範圍 0,n 1 有不確定的重複元素,找到至少乙個重複元素,要求o 1 空間和o n 時間。include const int no repeat flag 1 int findrepeatnumberinarray int a,int n return no re...

對乙個陣列排序之後求相鄰數的最大差值

題目 給定乙個整形陣列arr,返回排序後的相鄰兩數的最大差值。時間複雜度為o n 解答 如果用排序法實現,其時間複雜度為o nlogn 而如果利用桶排序的思想 不是桶排序 可以做到o n 額外空間複雜度為o n 遍歷arr找到最大值max和最小值min。如果arr的長度為n,準備n 1個桶,把max...