演算法之絕對眾數
演算法之絕對眾數
定義:絕對眾數就是一個數在一組數中個數超過1/2的數,假設一組數中絕對眾數只有一個,比如
int a[]={8,8,1,1,1,8,1,1,6,1,8};
在這個陣列中,1 為絕對眾數。
那麼我們開始分析:
刪除陣列中2個不同的數,絕對眾數是不變的。我們來思考一下原因:
- 如果刪除的兩個數中有一個是眾數,顯然剩餘的眾數個數還是大於(N-2)/2的。
- 如果刪除的兩個數沒有一個是眾數,不變。
記m為候選眾數,出現次數為c,初始化為0。
遍歷陣列
- 如果c = 0,則m = a[i]
- 如果c !=0,且m != a[i],則刪除 m和 a[i]
- 如果c !=0,且m = a[i],則c++。
程式碼如下:
#include"stdio.h"
int fun(int a[],int size)
{
int count = 0;
int m = a[0], i;
for(i=0;i<size;i++)
{
if(count==0)
{
m = a[i];
count = 1;
}
else if(m != a[i])
{
count --;
}
else
{
count++;
}
}
return m;
}
int main()
{
int a[]={8,8,1,1,1,8,1,1,6,1,8};
printf("%d",fun(a,sizeof(a)/sizeof(a[0])));
return 0;
}
相關文章
- 找眾數演算法演算法
- 演算法題:求眾數演算法
- 【演算法】已知必存在眾數,求該眾數 -- Boyer-Moore 投票演算法演算法
- PHP演算法練習二:求n和指定數的絕對差PHP演算法
- 【演算法】求眾數-js解法演算法JS
- 演算法:Majority Element(求眾數)演算法
- 分治演算法-眾數問題演算法
- 【演算法練習】(8)眾數演算法
- 優化的求眾數方法 - 摩爾投票演算法(演算法思想+求眾數的三種方法+摩爾投票演算法改進版求眾數 II)優化演算法
- 【演算法解題報告】求眾數演算法
- 求取眾數及重數的演算法實現(Java)演算法Java
- 演算法面試題彙總_2求眾數演算法面試題
- 演算法設計--眾數和重數問題(分治法)演算法
- CSS絕對定位CSS
- 看了絕對不會後悔之:spring Ioc原理Spring
- css篇之absolute絕對定位元素居中技巧CSS
- 看了絕對不會後悔之:spring AOP原理Spring
- 求眾數、排序演算法、二分法排序演算法
- 在Java中,整數的絕對值不一定是正數Java
- javascript獲取數字的絕對值程式碼例項JavaScript
- YT14-先來練練手之絕對值排序排序
- [絕對原創] AKM專案逸事之客戶投訴
- Node.js之絕對選擇(2018版)Node.js
- (七)一個尋找陣列中眾數的演算法陣列演算法
- 在Java中,負數的絕對值竟然不一定是正數!!!Java
- C++之數字計數演算法C++演算法
- 漫畫說演算法--動態規劃演算法一(絕對通俗易懂,非常棒)演算法動態規劃
- # CSS 絕對定位釋義CSS
- CSS position:absolute 絕對定位CSS
- CSS position: absolute 絕對定位CSS
- 絕對定位元素居中
- 絕對定位讓元素居中
- 元素的相對定位與絕對定位
- 【AI 演算法評測】BERT 對 NLP 效果的改善,不負眾望!AI演算法
- 演算法之逆序對兒查詢演算法
- 美國政府拒絕17萬民眾赦免斯諾登請求
- 演算法金 | 平均數、眾數、中位數、極差、方差,標準差、頻數、頻率 一“統”江湖演算法
- ACM 眾數問題ACM