題目:有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 要是沒有...