統計陣列中差最小(或最大)的組合可能個數

2021-07-29 23:08:00 字數 1009 閱讀 2447

小q今天在上廁所時想到了這個問題:有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?

輸入例子:

6 45 12 45 32 5 6

輸出例子:

1 2思路:先排序,分一般情況和特殊情況,

特殊情況陣列所有元素相同,差最小最大的組合個數都是c(n,2)

否則,差最大的組合個數 = 最小值個數minnum * 最大值個數maxnum

接下來求 ,差最小(minval )的組合個數,

(1)若最小差為0,那麼統計不同的重複元素的個數,我這裡寫的roo是後面出現相同元素的個數,所以roo=1的意思是後續陣列只有1個與當前值相同的元素,就是c(2,2),通用公式是c(roo+1,2)

(2)最小差不為0,那麼用 map 統計後續陣列與當前值能構成最小差的元素的個數roo,直接加

//o(n+nlogn)

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 100050;

typedef

long

long

int ll;

int a[maxn];

map ma;

int main()

else

ll minans = 0,roo = 0;

if(minval == 0) }}

if(roo>0)

}

else

}

printf("%lld %lld\n",minans,minnum * maxnum);

}

}return

0;}

求陣列中的最大差值或最小差值

給出長度為n的整數陣列arr n 有n個整數,求出陣列中兩個數的最大差值。可以先求出最大值和最小值,在一輪迴圈中求出最大值和最小值,時間複雜度就是o n 兩者之差就是差值最大的。求最小差值也是類似的。include unsigned intmax difference const int arr,u...

如何求陣列中的最大值或最小值

對於普通的數求大小,我們之前已經做過了,那對於如今的陣列,我們該如何求陣列中最大的元素呢?我們可以這麼想,陣列就是一組數,只要,我們在這組數中選取乙個值,然後讓它依次和其他的數進行大小比較,當它小於其他數時,我們就把較大的那個數給它,最終就能夠找到最大值了,程式如下 include int main...

python 統計陣列中不同元素的數量

很簡單,使用numpy.unique 函式,查詢陣列的唯一元素,返回陣列的排序後的唯一元素。官方文件見 import numpy as np data np.array 1,2,3 0,1,2 3,4,5 np.unique data num len np.unique data 結果 array ...