【问题】

请编写下面函数 int MajorityElement(int array[],int n);

该函数返回数组array中的多数元素。多数元素是指在占绝对多数(至少51%)的一个值。假设多数元素不存在。那么返回常量NoMajorityElement,该函数必须满足以下的条件:

 1. 必须以O(N)时间执行。

 2. 必须使用O(1)的附加空间。换句话说,可用个别的暂时变量,而不能够使用不论什么的暂时数组。

而且不能使用递归解决,这是由于随着递归层数加深,会须要空间来存储栈帧。

3. 不能改变数组中的不论什么元素的值。

【代码】

#include <stdio.h>

void MajorityElement(int array[], int n)
{
int majority, i, count;
majority = array[0];
count = 1;
for(i = 1; i < n; i++){
if(majority != array[i]){
if(count == 0){
majority = array[i];
count++;
}else{
count--;
}
}else{
count++;
}
}
if(count > 0)
printf("MajorityElement: %d\n", majority);
else
printf("NoMajorityElement\n"); } main()
{
int array[5] = {1, 2, 1, 2, 3};
MajorityElement(array, 5);
}

C程序设计的抽象思维-算法分析-大多数元素的更多相关文章

  1. 《C程序设计的抽象思维》2.10编程练习(未完)

    本文地址:http://www.cnblogs.com/archimedes/p/programming-abstractions-in-c-2.html,转载请注明源地址. 2.按照规定求圆柱的表面 ...

  2. 《C程序设计的抽象思维》1.9编程练习

    本文地址:http://www.cnblogs.com/archimedes/p/programming-abstractions-in-c-1.html,转载请注明源地址. 1.温度转换: #inc ...

  3. C程序设计的抽象思维-递归过程-砝码称重

    [问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...

  4. C#函数式程序设计之函数、委托和Lambda表达式

    C#函数式程序设计之函数.委托和Lambda表达式 C#函数式程序设计之函数.委托和Lambda表达式   相信很多人都听说过函数式编程,提到函数式程序设计,脑海里涌现出来更多的是Lisp.Haske ...

  5. 计算机程序设计的史诗TAOCP

    倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:“我只要一把锤子和一个锯”.但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你“我需要一些精确的工具”.由于计算机所解决的问题 ...

  6. C/C++面试题目一

    C/C++开发工程师面试题目(一)(附答案分析) 推荐:自己根据在面试中碰到做过的一些题目以及总结的题目,希望对面试的同学有所帮助. 一. 选择题 1. 下列类中(  )不是输入输出流类iostrea ...

  7. 【algo&ds】【吐血整理】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、B树、字典树、红黑树、跳表、散列表

    本博客内容耗时4天整理,如果需要转载,请注明出处,谢谢. 1.树 1.1树的定义 在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结 ...

  8. 数据结构和算法(Golang实现)(30)查找算法-2-3-4树和普通红黑树

    文章首发于 阅读更友好的GitBook. 2-3-4树和普通红黑树 某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较 ...

  9. HPU 1127:【C语言程序设计】[7.4.2]最大元素(排序)

    [C语言程序设计][7.4.2]最大元素 时间限制: 1 Sec 内存限制: 128 MB提交: 386 解决: 139 题目描述 编一个程序,读入n个元素的实型数组,然后调用一个函数,递归地找出其中 ...

随机推荐

  1. java JNI 的实现(2)-java和C/C++的相互调用.

    目录 概述 一,java代码 二,稍微注意通过javah生成的'C/C++'.h头文件和源java代码的关系 三,在C/C++中实现java的native方法(完整C/C++) 1,修改age,即Ja ...

  2. 工作中部署使用MP平台的一些问题

    1.首先先把项目导入到myeclipse中,如果没有.classpath和.mymetadata和.project等文件,就自己创建一个web项目,然后把里面的src覆盖,webroot等文件覆盖. ...

  3. Core Data 学习简单整理01

    Core Data是苹果针对Mac和iOS平台开发的一个框架, 通过CoreData可以在本地生成数据库sqlite,提供了ORM的功能,将对象和数据模型相互转换 . 通过Core Data管理和操作 ...

  4. JavaAppArguments.java程序的更改

       此程序模仿JvaAppArgyments.java编写,从命令行接受多个数字,求和之后输出结果.  设计思想:命令行参数都是字符串,可以考虑用 Integer.parseInt(args[]) ...

  5. 解决Access restriction问题

    今天在导入一个包时报错了

  6. linux入门。删除不用到内核,为boot分区释放空间

    在终端中输入如下命令: dpkg --get-selections|grep linux-image 这时会列出系统中所有到内核. 你可以使用 uname -a 查看你当前使用到内核. 然后用 sud ...

  7. gcc使用笔记

    1.如何在gcc中传输宏定义? 参考如下红色部分,可以传入宏定义 gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-p ...

  8. OSSEC配置

    http://gavinshaw.blog.51cto.com/385947/1020540

  9. MCS51浮点计算程序

    MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEEE转换,在上位机直接显示. ;这是本人使用的MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEE ...

  10. 浅谈JavaScript浮点数及其运算

    原文:浅谈JavaScript浮点数及其运算     JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的.浮点数的精度问题 ...