博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ:Majority Element II(主元素II)
阅读量:7099 次
发布时间:2019-06-28

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

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.

求主元素,这次的是大于sz/3就算是主元素,可以分为两轮查找,第一轮先查找元素数目较多的两个元素(可能不属于主元素),第二次再遍历来查找上面两个元素是否符合条件,代码如下:

1 class Solution { 2 public: 3     vector
majorityElement(vector
& nums) { 4 int m1, m2; 5 int count1, count2; 6 vector
ret; 7 int sz = nums.size(); 8 if(!sz) return ret; 9 m1 = nums[0];10 m2 = 0;11 count1 = 1;12 count2 = 0;13 for(int i = 1; i < sz; ++i){14 if(m1 == nums[i])15 count1++;16 else if(m2 == nums[i])17 count2++;18 else if(count1 == 0){19 count1++;20 m1 = nums[i];21 }else if(count2 == 0){22 count2++;23 m2 = nums[i];24 }else{25 count1--;26 count2--;27 }28 }29 count1 = count2 = 0;30 for(int i = 0; i < sz; ++i){31 if(nums[i] == m1) ++count1;32 if(nums[i] == m2) ++count2;33 }34 if(count1 > sz/3) ret.push_back(m1);35 if(m1 != m2)36 if(count2 > sz/3) ret.push_back(m2);37 return ret;38 }39 };

 

转载于:https://www.cnblogs.com/-wang-cheng/p/4922892.html

你可能感兴趣的文章
sed实例(持续更新)
查看>>
12月13日笔记 远程连接Centos7系统
查看>>
Docker 数据卷
查看>>
python反射
查看>>
RHEL7搭建LAMP环境并安装Discuz论坛
查看>>
python3 字符串操作
查看>>
网络工程师学习笔记之WLAN(IEEE802.11)
查看>>
阿里云初步学习有感,建设网站!
查看>>
查询优化器内核剖析第五篇:进一步的了解执行计划
查看>>
半夜一次数据导入导出主从同步及解决方案
查看>>
学习笔记:rsync命令实战
查看>>
Kali Linux Network Scanning Cookbook读书笔记之nmap
查看>>
基于文件夹目录生成CHM电子书
查看>>
[C#]提交表单
查看>>
awk用法:取列表最后一列
查看>>
网络监控系统的建立及部署(三)
查看>>
超级网管员——网络基础
查看>>
ThinkPHP邮件发送类
查看>>
nginx+gridfs+mongodb分布式图片存储系统
查看>>
MDaemon功能篇之优先级邮件
查看>>