主元素

摘要:
给定一个整数数组,找到主元素。它在数组中的出现严格大于数组元素数量的一半。注意:仅给出数组中唯一的主元素作为示例。[1,2,1,2,1,3,3]返回1。时间复杂性为O,空间复杂性为O。标签LintCode保留所有权利枚举贪婪Zenefits1=/2时,假设的主元素a是实际的主元素$tmp:false;38}3940美元arr=[1,1,1,2,2,2];41$res=主机_元素;//返回false或主元素42var_dump的值;

给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。

注意事项

数组中只有唯一的主元素

样例

给出数组[1,2,1,2,1,3,3] 返回 1

挑战

要求时间复杂度为O(n),空间复杂度为O(1)。

标签

LintCode 版权所有 枚举法 贪心 Zenefits

 1 <?php
 2 /**
 3  * 主元素
 4  * 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一
 5  */
 6 
 7 /**
 8  * 核心思想:一个大小为n的数组中存在一个元素的个数>n/2,则如果用这个数组中的其他的数和该主元素进行抵消的话,最后剩下的一定是主元素,因为主元素的个数最多
 9  * 1.假设数组中第一个元素a(1)为主元素,设count = 1;
10  * 2.声明一个常量size等于数组的大小;
11  * 3.a(1)和a(2)相比,相等count++;否则count--; 然后继续比较a(3),以此类推。
12  * 4.当与a(n)比较后,count = 0时,重新假设a(n+1)为主元素,并继续与a(n+2)作比较。
13  * 5.当count >= (size-m)/2时,此时假设的主元素a(m)即为实际的主元素。或者遍历完整个数组后,当前假设的主元素为实际主元素。
14  */
15 function host_element($data)
16 {
17     if(empty($data))
18     {
19         return false;
20     }
21     $tmp = $data[0];//假设第一个元素为主元素
22     $count = 1;
23     $size = count($data);
24     for($i=1; $i<$size; ++$i)
25     {
26         if(0 == $count)
27         {
28             $tmp = $data[$i];
29         }
30         if($tmp == $data[$i])
31         {
32             $count++;
33         } else {
34             $count--;
35         }
36     }
37     return $count > 0 ? $tmp : false;
38 }
39 
40 $arr = [1, 1, 1, 1, 2, 2, 2];
41 $res = host_element($arr);//返回false或者主元素的值
42 var_dump($res);

免责声明:文章转载自《主元素》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Xilinx资源优化问题性能优化工具---top下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

CorelDRAW 编写和运行宏指令

在开发和运行CorelDRAW宏之前,必须安装VBA组件。在CoerlDRAW11和12中安装CorelDRAWVBAVBA是典型安装的一部分。2如果安装开始,请单击安装CorelDRAW12 Graphics Suite。CorelDRAWVBA工具栏CorelDRaw工具栏提供了几个快速的VBA函数和对VB编辑器的访问。但是,您可以通过在CorelDRA...

安装gulp教程(整理)

所以安装nodejs。...

如何给LINUX红帽子版本配置IP(转)

如果需要绑定另一个IP地址,只需在文件名中添加一个,并在文件中的DEVICE中添加eth0:x。LINUX可以支持多达255个IP别名,多个网卡绑定到一个IP地址,并且可以使用多个网卡创建具有相同IP地址的虚拟网卡。事实上,这种技术已经存在于Sun和Cisco中,它们分别被称为中继和以太网信道技术。在Linux中,这种技术被称为绑定。...

通过 java的 esl 连接 freeswitch

--所有ip都能通过esl连接到freeswitch--˃4.reloadmod_event_socket5.通过java的esl连接fs服务器三、报错[WARNING]mod_event_socket.c:2641IPx.x.x.xRejectedbyacl"loopback.auto"四、以前版本按照步骤二操作完就可以了,现在报错了。世界变化的太快。--...

weblogic补丁下载与安装补丁的方法

去:https://jingyan.baidu.com/article/642c9d34b3b493254a46f7e4.htmlweblogic安装应用程序后,可能会发现该版本存在漏洞。我们可以根据weblogic漏洞报告下载补丁,然后修复相应的漏洞。我们如何下载和安装修补程序?Weblogic 10.3.6.0 Linux步骤1:在Weblogic中出现...

全局唯一Id:雪花算法

在分布式系统中,有些场景需要使用全局唯一ID。为了防止ID冲突,可以使用36位UUID。然而,UUID有一些缺点。首先,它们比较长。此外,UUID通常是无序的。有时我们希望使用一个更简单的ID,并且希望根据时间按顺序生成ID。Twitter的SnowFlake解决了这一需求。最初,Twitter将存储系统从MySQL迁移到Cassandra。因为Cassan...