mysql 兩元組的差值 找元組中差值最大最小個數

2021-10-17 21:56:09 字數 1760 閱讀 2501

題目:有n個數,兩兩組成二元組,相差最小的有多少對呢?相差最大呢?

例如 ar = ,返回 1   1

br = ,返回 2  1

我的思路是將元素兩兩做差,將差值儲存在乙個陣列內,把陣列進行排序,即可找出最小差值多少個,最大差值多少個。(看起來我的時間空間複雜度低不了)

#include

#include

#include

using namespace std;

void func(int n, int ar, int br)

int size = (n*n-n)/2;

vector vec;

for(int i=0; i

for(int j=i+1; j

if(ar[i]>ar[j])

vec.push_back(ar[i]-ar[j]);

else

vec.push_back(ar[j]-ar[i]);

sort(vec.begin(), vec.end());

for(auto i=vec.begin(); i!=vec.end(); ++i)

cout<

cout<

cout<

if(vec[0] != vec[size-1])

int min = 0, max = 0;

int i = 0;

while(vec[i] == *vec.begin())

i = size-1;

while(vec[i] == vec[size-1])

br[0] = min;

br[1] = max;

return;

br[0] = size;

br[1] = size;

return;

int main()

int ar = , br[2]=;

func(sizeof(ar)/sizeof(ar[0]), ar, br);

cout<

return 0;

執行結果

因該還有更好地思路來節省空間時間

於是我換了一種思路,在每次拿到差值的時候就比較它是不是最大或最小值,是就計數,不是就跳過得到下面的演算法

#include

#include

#include

using namespace std;

void func(int n, int ar, int br)

int min = -1, max = -1, maxc = 0, minc = 0, tmp = 0;

for(int i=0; i

if(!i)

min = ((ar[0]-ar[1])>0 ? ar[0]-ar[1] : ar[1]-ar[0]);

for(int j=i+1; j

tmp = ar[i]-ar[j];

if(tmp<0)

tmp = -tmp;

if(tmp

else if(tmp==min)

else if(tmp>max)

else if(tmp==max)

else continue;

br[0]=minc;

br[1]=maxc;

int main()

int ar = , br[2]=;

func(sizeof(ar)/sizeof(ar[0]), ar, br);

cout<

return 0;

執行結果

看起來節省了空間

找元組中差值最大最小個數

題目 有n個數,兩兩組成二元組,相差最小的有多少對呢?相差最大呢?例如 ar 返回 1 1 br 返回 2 1 我的思路是將元素兩兩做差,將差值儲存在乙個陣列內,把陣列進行排序,即可找出最小差值多少個,最大差值多少個。看起來我的時間空間複雜度低不了 include include includeus...

python中的元組 Python中的元組

一 元組 tuple 元組基本上就像乙個不可改變的列表。與列表一樣支援任意型別的元素 支援巢狀以及常見的序列操作。元組也有一些方法,可用dir tuple 檢視。元組編寫在圓括號中。info 林間 man 1991,7,13,true 支援不同型別 info 林間 man 1991,7,13 tru...

python中的元組

1 元組 列表中通常儲存相同型別的資料,而元組中通常儲存不同型別的資料 tuple 元組 與列表相似,不同之處在於元組的元素不能修改 元組表示多個元素組成的序列 元組在python開發中,有特定的應用場景 用於儲存一串資訊,資料之間使用,分隔 元組用 定義 2 元組的特點 t2 hello 要是沒有...