小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 ...