当前位置: 首页 > news >正文

LeetCode169. Majority Element C语言

1
2
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.

题意:找到数组中数量超过半数的.本题假设一定存在Majority Element。否则还得判断不存在怎么办。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
int  majorityElement( int * nums,  int  numsSize) {
     //很明显第一种复杂度不行
     // int size=0;
     // if(numsSize%2==0){
     //     size=numsSize/2;
     // }else{
     //     size=(numsSize-1)/2;
     // }
     // int i,j;
     // int count=0;
     // int flag=0;
     // for(i=0;i<size;i++){
     //     count=1;
     //     // printf("%d---",flag);
     //     if(!flag){
     //     for(j=i+1;j<numsSize;j++){
             
     //         if(nums[j]==nums[i]){
     //             count++;
     //         }
     //     }
     //     // printf("%d",count);
     //     if(count>size){
     //         flag=i;
     //         break;
     //     }
     //     }else{
     //         break;
     //     }
     // }
     // return nums[i];    
     //网上一种专业算法Moore‘S voting Algorithem
     //详情见http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html
     //维护候选人和其出现的数量
     int  candidate;
     int  count=0;
     for ( int  i=0;i<numsSize;i++){
         if (count==0){
             candidate=nums[i];
             count++;
         } else {
             if (nums[i]==candidate){
                 count++;
             } else {
                 count--;
             }
         }
     }
     return  candidate;
     
}

PS:本来笨死的用了两层循环做出来。时间复杂度不过关。

然后网上找了一下,发现一个Moore's voting Algorithem 算法,专门解决这类问题的,还有算法演示。。。http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html

服!


本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1867859

相关文章:

  • CCNP综合实验2
  • *1 计算机基础和操作系统基础及几大协议
  • 没有ARM开发板一样移植uboot并用SKYEYE仿真
  • 如何通过httpclient获取访问域名的真实ip
  • NET客户端js调用服务器端控件的方法
  • 4周第5次课 zip压缩工具 tar打包 打包并压缩
  • Windows Server 2008R2 漫游用户配置
  • 大规模中文概念图谱CN-Probase正式发布
  • Windows XP \Windows 2003启动过程的学习及故障分析处理(五)
  • Ural State University Internal Contest October'2000 Junior Session
  • 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(一)
  • pythony读取xml
  • 配置DNS支持邮件服务器域名解析,支持别名,反向查找区
  • Flash正式成为Googel Chrome浏览器内置插件
  • mysql主从切换步骤
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • avalon2.2的VM生成过程
  • EOS是什么
  • flutter的key在widget list的作用以及必要性
  • java小心机(3)| 浅析finalize()
  • Laravel 实践之路: 数据库迁移与数据填充
  • nodejs:开发并发布一个nodejs包
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python进阶细节
  • React Transition Group -- Transition 组件
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • VuePress 静态网站生成
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • windows下mongoDB的环境配置
  • 利用jquery编写加法运算验证码
  • 设计模式(12)迭代器模式(讲解+应用)
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (6)添加vue-cookie
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (理论篇)httpmoudle和httphandler一览
  • (转载)利用webkit抓取动态网页和链接
  • *1 计算机基础和操作系统基础及几大协议
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net Application的目录
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .netcore 获取appsettings
  • .NET上SQLite的连接
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .net中调用windows performance记录性能信息
  • /var/lib/dpkg/lock 锁定问题
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [Android Pro] AndroidX重构和映射