数组中出现次数超过一半的数
来源:互联网 发布:电影同声传译软件 编辑:程序博客网 时间:2024/05/14 20:55
分析:
6//找出在一个数组中出现次数超过一半的数,可以这样理解,找一个数的中位数
7 //基于这样思想最直观的做法是排序后找中间的数既可,但最好时间复杂度也得O(NlogN)8 //所以用一种简单的办法来解决
9 //定义两个变量,从第一个数开始找,并记录第一个数为result为需要找的数,它出现的次数初始化为:times=1
10 //以后只要找到和result相等的数rimes++,否则times--
11 //当times等于0的时候,改变result等于当前指向的数,继续找
2 #include <iostream> 3 #include <assert.h> 4 using namespace std; 5 6 //找出在一个数组中出现次数超过一半的数,可以这样理解,找一个数的中位数 7 //基于这样思想最直观的做法是排序后找中间的数既可,但最好时间复杂度也得O(NlogN) 8 //所以用一种简单的办法来解决 9 //定义两个变量,从第一个数开始找,并记录第一个数为result为需要找的数,它出现的次数初始化为:times=1 10 //以后只要找到和result相等的数rimes++,否则times-- 11 //当times等于0的时候,改变result等于当前指向的数,继续找 12 int find(int *arr,int len) 13 { 14 assert(arr !=NULL); 15 assert(len >0); 16 int result=arr[0]; 17 int times=1; 18 for(int i=1; i<len; ++i) 19 { 20 if(times==0) 21 { 22 result=arr[i]; 23 times=1; 24 }else if(result==arr[i]) 25 times++; 26 else 27 times--; 28 } 29 return result; 30 } 31 int main() 32 { 33 int arr[]={1,2,3,2,2,2,5,4,2}; 34 //int arr[]={5,5,1,2,5,2,5,6,5}; 35 int len=sizeof(arr)/sizeof(*arr); 36 37 int key=find(arr,len); 38 cout<<"出现次数最多的数:"<<key<<endl; 39 return 0; 40 }
1 0
- 【数组2】数组中出现次数超过一半的数
- 数组出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 算法--找出数组中出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 算法--找出数组中出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 算法--找出数组中出现次数超过一半的数
- 数组中出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 求数组中出现次数超过一半的数
- 找出数组中出现次数超过一半的数
- 18数组中出现次数超过一半的数
- 数组中出现次数超过一半的数
- 求数组n中出现次数超过一半的数
- 数组中出现次数超过一半的数
- Leetcode 62. Unique Paths
- C++补做实验一
- IOS中定时器NSTimer的开启与关闭
- hdu 1021 Fibonacci Again(斐波那契数列,取余)
- 专题四1005
- 数组中出现次数超过一半的数
- 补C++ 4
- 300 Longest Increasing Subsequence
- Fragment使用--文章集锦
- linux---谈谈vfork和fork的区别及exit与return
- 周末作业
- Android中获取布局中的布局(获取子布局方法)
- PYTHON-基础-时间日期处理小结
- MIPI CSI-2规范(一)——概述及层级