有乙個整數陣列,請求出兩兩之差絕對值最小的值

2021-08-25 16:48:27 字數 694 閱讀 6745

1.可以快排,然後遍歷一遍排完序後的陣列。時間複雜度為o(nlogn+n)。

2.先遍歷一遍陣列a[ ],找出最大值max和最小值min。然後以建立乙個(max+min-1)大小的陣列b[ ],再次遍歷原始陣列,b[a[i]-min]++,試圖建立一種對映關係,降低時間複雜度。**如下:

#include //#include using namespace std;

int findmindiff(int a, int len) }

int n = max-min+1;

int* res = new int[n];

memset(res, 0, n*sizeof(int));

for (i = 0; i < len; i++)

int first, mindiff = int_max;

/*for (i = 0; i < n; i++)

else if (res[i] == 1 && isflag)

else if (res[i] == 1 && !isflag)

first = i;

} }return mindiff;

}int main()

; int len = sizeof(a)/sizeof(int);

cout<<"the minimum diff is : ";

cout<}

整數陣列中兩兩之差絕對值最小的值

題目1 有乙個整數陣列,請求出兩兩之差絕對值最小的值,記住,只要得出最小值即可,不需要求出是哪兩個數。題目2 請求出最小連續子串行絕對值和,也就是求連續子串行之和的絕對值最小值 針對問題1 方法 1 暴力的方式。遍歷所有的兩個數的差,記錄最小值。演算法的複雜度o n2 方法 2 兩個數要想差的絕對值...

給定乙個整數陣列,找出其中兩個數相加等於目標值

兩層遍歷,最直觀 時間複雜度 o n n 實現 public int twosum int numbers,int target return result 時間複雜度 o n 第一遍遍歷 將 target a 和i 作為鍵值對,存入hash表,遍歷時間複雜度為o n 第二遍遍歷 查詢在hash表中...

給定乙個整數陣列,找出其中兩個數相加等於目標值

example given nums 2,7,11,15 target 9,because nums 0 nums 1 2 7 9,return 0,1 題目的意思 在無序的陣列中找兩個數,使得這兩個數之和與給定的目標值相等,返回這兩個數的下標。大佬們的做法 下面 不是好的實現方法,可以用hash表...