數字序列中的最大差和最小差對數

2021-07-22 08:56:02 字數 785 閱讀 8508

題目:

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

例如:輸入

645 32 45 16 6 5

輸出1  2

思路1. 最大差一定是,最大數和最小數之差,所以在排序後對最大數和最小數的數量進行統計即可,特別的情況:當最大和最小一樣時,那麼有(n-1)n/2對;

2. 最小差一定是相鄰兩數之差,分為兩種情況:

1)最小差不為零,進行一次遍歷,將所有等於最小差的相鄰對數計數即可

2)最小差等於零時,如果一段數字為 6 6 6 6 6,那麼對數就是 4+3+2+1,而不是4對。

#include#include #include #includeusing namespace std;

int getnummax(vectorarr)

for (int j = len - 1; j > 0; j--)

return num_max*num_min;

}int getnummin(vectorarr)

int count = 0;

if (min == 0)//要考慮如果有重複的數字,這時候的組合就是n-1+n-2+...1,n為重複數字的最大值

}} else

return count;

}int main()

cout << getnummin(arr) << " " << getnummax(arr) << endl; }

return 0;

}

數字序列中某一位的數字

面試題44 數字序列中某一位的數字 題目 數字以0123456789101112131415 的格式序列化到乙個字串行中。在這 個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫一 個函式求任意位對應的數字。static int digit at uint32 t inde...

數字序列中某一位的數字

012345678910.序列中,第n位數 def solution n if n 0 return 1 if n 10 return n i 2 確定是第幾位數 sums 10 ret 0while true 一位數 0 9 共10個字元 兩位數 10 99 共180個字元 三位數 100 999...

數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中,在這個序列中。第五位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。暴力解法,從0開始計數,數到第n位。以1001位為例子。因為序列前10位是0 9這10個只有1位的數字。序...