牵风 发表于 2022-2-8 16:40:16

这题有什么比较好的算法

主元素
题目描述

输入
输入由多组数据组成。
每组数据由二行组成,第一行是整数n(1<=n<=100000), 第二行是n个空格分开的整数,它们的值位于区间。
题目保证60%的数据n的值不超过20。
输出
每一组输入数据输出一行。如果存在满足条件的x,则输出,否则输出-1。
样例输入 Copy
3
3 2 3
8
0 5 5 3 5 7 5 5
8
0 5 5 3 5 1 5 7
样例输出 Copy
3
5
-1

傻眼貓咪 发表于 2022-2-8 19:28:05

题目好像不完整。{:10_269:}
以下是我的代码,不知道是不是你要的:#include <stdio.h>

int main()
{
    int n, count = 0, num, res;
    scanf("%d", &n);
    /*----- 摩尔投票法 -----*/
    while(n--){
      scanf("%d", &num);
      if(!count) res = num;
      res == num ? count++ : count--;
    }
    count ? printf("%d", res) : printf("%d", -1);
    return 0;
}

jhq999 发表于 2022-2-8 22:01:57

傻眼貓咪 发表于 2022-2-8 19:28
题目好像不完整。
以下是我的代码,不知道是不是你要的:

你猜出来了{:5_106:},看半天没猜出来{:9_241:}

傻眼貓咪 发表于 2022-2-8 22:17:27

jhq999 发表于 2022-2-8 22:01
你猜出来了,看半天没猜出来

{:10_257:}{:10_257:}{:10_257:}
页: [1]
查看完整版本: 这题有什么比较好的算法