[LeetCode练习题-C语言]169. Majority Element
2016-07-27 15:34
393 查看
[LeetCode练习题-C语言]169. Majority Element
题目
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element always exist in the array.
这道题我没想到好的方法做,最开始用struct结构体记录每个数出现频率,太麻烦!在网上参考到许多较好的思路,如
http://www.cnblogs.com/ganganloveu/p/4177690.html
思路为:
每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。
可扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除。
代码如下
int majorityElement(int* nums, int numsSize) { int count = 0; int element,i; for(i=0; i<numsSize; i++){ if(count == 0){ element = nums[i]; count = 1; }else{ if(nums[i] == element){ count++; }else{ count--; } } } return element; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言二进制思想以及数据的存储
- C语言中计算正弦的相关函数总结