数众数

有序整数序列,数出所有众数及其个数

模块1:线性扫描

模块2:cnt计数:条件:遇见不等,计a[i-1]的cnt

notice: 最后一个数一定不会入栈,需要单独处理

 1 #include <iostream>
 2 #include <vector>
 3 #include <stack>
 4 using namespace std;
 5 void findMode(vector<int> &a, stack<int> &x, stack<int> &y){
 6     int cnt = 1;
 7     y.push(-1);
 8     for (int i = 1; i < a.size(); i++){
 9         if  (a[i] == a[i-1])
10             cnt++;
11         else{
12             if (cnt == y.top()){
13                 x.push(a[i-1]);
14                 y.push(cnt);
15             }
16             else if (cnt > y.top()){
17                 while( !x.empty() )
18                     x.pop();
19                 while( !y.empty() )
20                     y.pop();
21                 x.push(a[i-1]);
22                 y.push(cnt);
23             }
24             cnt = 1;
25         }
26     }
27     if (cnt == y.top()){
28         x.push(a[a.size()-1]);
29         y.push(cnt);
30     }
31     else if (cnt > y.top()){
32         while( !x.empty() )
33             x.pop();
34         while( !y.empty() )
35             y.pop();
36         x.push(a[a.size()-1]);
37         y.push(cnt);
38     }
39 }
40 int main(){
41     vector<int> a;
42     stack<int> x, y;
43     a.push_back(1);
44     a.push_back(2);
45     a.push_back(3);
46     findMode(a, x, y);
47     while( !x.empty() || !y.empty() ){
48         cout << x.top() << " " << y.top() << endl;
49         x.pop();
50         y.pop();
51     }
52     return 0;
53 }
时间: 2024-08-28 10:06:21

数众数的相关文章

机器学习 - 船员数据分析

样本数据 PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S 2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.28

基于快速排序,寻找众数(出现最多的数),运用分治的思想

// ConsoleApplication4.cpp: 定义控制台应用程序的入口点.// #include "stdafx.h"#include<iostream>using namespace std; #include<iostream>using namespace std; void middl(int &p, int &q, int &r)//找枢轴,然后把枢轴位置都换到第一位,左中右,取中值,放在左边第一个 { if (p &

[LeetCode] Find Mode in Binary Search Tree 找二分搜索数的众数

Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred element) in the given BST. Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than or equal to the nod

众数问题

描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30) 每组测试的第一行是一个整数m,表示多重集S中元素的个数为m 接下来的一行中给出m(m<100)个不大于10万的自然数 (不会出现不同元素出现的次数相同的情

NYOJ-众数问题

众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30) 每组测试的第一行是一个整数m,表示多重集S中元素的个数为m 接下来的一行中

nyoj_95_众数问题_map练习

众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30)每组测试的第一行是一个整数m,表示多重集S中元素的个数为m接下来的一行中给出

ACM题目————STL练习之众数问题

描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30)每组测试的第一行是一个整数m,表示多重集S中元素的个数为m接下来的一行中给出m(m<100)个不大于10万的自然数(不会出现不同元素出现的次数相同的情况,如

nyoj 95 众数问题【水】

众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30)每组测试的第一行是一个整数m,表示多重集S中元素的个数为m接下来的一行中给出

NYOJ---题目95众数问题

众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30) 每组测试的第一行是一个整数m,表示多重集S中元素的个数为m 接下来的一行中