找出陣列中重複次數最多的數
阿新 • • 發佈:2019-01-09
方法一:如果相同的數是連續出現
從第一個數開始,與它後面的數比較,如果相同,計算+1,如果不等,計數置為1.同時保持此時的計數次數和此時的元素;
方法二:陣列中的數隨機排列#include<stdio.h> int Search(int a[],int len) { int max=0;//保持到目前為此出現次數最多的那個數 int count=1; int maxnum=count;//儲存最大計數次 int maxd; for(int i=0;i<len-1;i++) { max=a[i]; if(a[i+1]==max) count++; else count=1; if(count>maxnum) { maxnum=count; maxd=max; } } return maxd; } int main() { int array[]={1,1,1,2,2,4,4,4,4,5,5,6,6,6,6,6}; int lens=sizeof(array)/sizeof(array[0]); int num=Search(array,lens); printf("%d\n",num); return 0; }
#include<iostream> #include<map> using namespace std; bool findMostFrequentInArray(int *a,int size,int &val) { if(size==0) return false; map<int,int> m; for(int i=0;i<size;i++) { if(++m[a[i]]>=m[val]) val=a[i]; } return true; } int main() { int a[]={1,1,2,2,4,4,4,4,5,5,6,6}; int val=0; if(findMostFrequentInArray(a,12,val)) cout<<val<<endl; int b[]={1,5,4,3,4,4,5,4,5,5,6}; if(findMostFrequentInArray(b,12,val)) cout<<val<<endl; int c[]={1,5,4,3,4,4,5,4,5,5,6,6,6,6,6}; if(findMostFrequentInArray(c,15,val)) cout<<val<<endl; return 0; }