博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【刷算法】数组中出现次数超过一半的数字
阅读量:7041 次
发布时间:2019-06-28

本文共 838 字,大约阅读时间需要 2 分钟。

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

分析

像[1,2,3,2,2,2,5,4,2]这样的数组,如果每次去掉两个不同的数字,那么到最后会剩下[2],2就是数组中超过一半的数字。可以使用代码来模拟这个过程即可。

代码实现

function MoreThanHalfNum_Solution(numbers){    if(numbers.length === 0)        return 0;    if(numbers.length === 1)        return numbers[0];        var times = 0, cand;        for(var i = 0;i < numbers.length;i++) {        if(times === 0){            cand = numbers[i];            times = 1;        } else {            if(cand === numbers[i])                  times++;            else                 times--;        }    }        times = 0;    for(var i = 0;i < numbers.length;i++) {        if(cand === numbers[i])            times++;    }    if(times > Math.floor(numbers.length/2))        return cand;    else        return 0;}复制代码

转载地址:http://waxal.baihongyu.com/

你可能感兴趣的文章
SGU 116 Index of super-prime
查看>>
简化Web开发的12个HTML5-CSS框架
查看>>
C#温故而知新学习系列之.NET运行机制—.NET中非托管代码是指什么?(二)
查看>>
25个漂亮的国外绿色网站设计作品分享
查看>>
C++中delete与delete[]
查看>>
iphone:URL initWithString 返回为空
查看>>
ASP.NET页面间数据传递的9种方法
查看>>
#百度360大战# 我为什么要支持360
查看>>
html5指南--3.拖拽功能的实现
查看>>
绘图: Python matplotlib简介
查看>>
C# HttpHelper 1.0正式版发布
查看>>
《简明Python教程》学习笔记
查看>>
Fine Uploader文件上传组件
查看>>
POJ 3264 Balanced Lineup
查看>>
php_mcrypt.dll无法加载解决方法
查看>>
Semplice Linux 4 发布,轻量级发行版
查看>>
在android项目中R.java中失去id类怎么办
查看>>
Andorid时间控件和日期控件
查看>>
VC MFC中设置对话框的背景色、背景图片
查看>>
ios中tableview侧栏的折叠
查看>>