騰訊模擬面試紅包問題解答

2022-07-21 18:24:11 字數 919 閱讀 7497

問題描述

一共收了n個紅包,然後其中金額為k的紅包出現次數大於n/2;讓你寫程式求解k值(要求程式足夠優化)

問題分析:

這個題目明確告訴我們,所求為出現次數大於一半的,也就是最多的那個份額。也就是數學裡眾數這個概念了,且這個題目中更明確規定了,這個眾數是大於總數的一半的。

在這個明確的條件之後,更是要求我們的程式更高效,優化方案。

方案與思路

①因為這是個有序問題,那麼實現方案可以是

排序,然後統計比較計算出出現次數最多的乙個

//偽**:

void test(int *arr,int n)

//1排序

//2二次遍歷統計,找出最大

②對一進行優化,在排序同時記錄每個數字第一次出現在排序中的下標,然後通過區間寬度進行確立

void test(int *arr,int n)

//1排序,記錄首次出現下標

//1111,2222,33333,44444444444,55

//0      4       8        13...

//注:這個下標確立可以通過幾個指標標記

//2區間寬度確立:計算寬度,找到寬度最寬的區間,然後對指標解引用得到值

③改進演算法

void find(int *a, size_t size)

else

if (count == 0

)

}cout

<}void

test()

; find(arr1,

13);

}

void find(int *a, size_t size)elseif (count == 0)}cout << tmp;}

void test();find(arr1, 13);}

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...

jquery 問題解答

1 var v summer input input val 根據class獲取input 2 var v input name user name val 轉義帶.的name 轉義 3 var v input eq 2 val 獲取div內倒數第二個input元素 倒數可以寫負數 4 物件 div...