LeetCode 1093. 大样本统计
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                LeetCode 1093. 大样本统计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                1. 題目
我們對 0 到 255 之間的整數進行采樣,并將結果存儲在數組 count 中:count[k] 就是整數 k 的采樣個數。
我們以 浮點數 數組的形式,分別返回樣本的最小值、最大值、平均值、中位數和眾數。其中,眾數是保證唯一的。
我們先來回顧一下中位數的知識:
 如果樣本中的元素有序,并且元素數量為奇數時,中位數為最中間的那個元素;
 如果樣本中的元素有序,并且元素數量為偶數時,中位數為中間的兩個元素的平均值。
來源:力扣(LeetCode)
 鏈接:https://leetcode-cn.com/problems/statistics-from-a-large-sample
 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:vector<double> sampleStats(vector<int>& count) {int i, MIN = -1, MAX, avg, median = 0, mode;int n = 0, ni = 0, N;long sum = 0;for(i = 0; i < count.size(); ++i){if(count[i]){if(MIN == -1)MIN = i;//第一個最小的數 iMAX = i;//最大的數 in += count[i];//個數累加sum += count[i]*i;//求和if(count[i] > ni)//單個數 最大的個數{ni = count[i];mode = i;//眾數}}}vector<double> ans({MIN,MAX,double(sum)/n,0,mode});ni = 0;bool flag = false;for(i = 0; i < count.size(); ++i){ //尋找中位數if(n%2)//總的個數是奇數個{if(ni+count[i] < n/2+1)ni += count[i];else{ans[3] = i;break;}}else//偶數個{N = ni + count[i];if(N < n/2)ni += count[i];else if(N >= n/2 && N < n/2+1){ans[3] = i;flag = true;//中位數,卡在兩個數上}else{if(!flag){ans[3] = i;break;}else{ans[3] = double(ans[3]+i)/2;break;}}}}return ans;} };8 ms 8.6 MB
總結
以上是生活随笔為你收集整理的LeetCode 1093. 大样本统计的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: LeetCode 1457. 二叉树中的
 - 下一篇: LeetCode 1442. 形成两个异