solution_169
来源:互联网 发布:linux find grep命令 编辑:程序博客网 时间:2024/06/05 08:22
LeetCode Problem 169 Description
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.
Solution
This problem can be solved with the Boyer-Moore talgorithm. For instance, the following image will illustrate the algorithm.
We can see that if the major element is not the same as the current element, then the amount of the major element decreases 1. If the amount becomes zero and it meets another element, the major element will change to the current element and repeats the steps.
Here is the code:
#include <iostream>#include <string>#include <vector>using namespace std;class Solution { public: int majorityElement(vector<int> & nums);};int Solution::majorityElement(vector<int> & nums) { //Boyer-Moore algorithm int major = nums[0], count = 1; for (int i = 1; i < nums.size(); i++){ if (count == 0) { major = nums[i]; count = 1; } else if (major == nums[i]) { count++; } else { count--; } } return major;}
As we can see, every time that the element of the vector is not equal to the current major element then the count of the current element decreases 1. If the current count become 0 and we meet another different element, we should change the major element. Repeat the steps and we can get the last element as the major element.
- solution_169
- @angular-cli报错
- 非常好的协同过滤入门文章
- linux 64位系统兼容32bit程序 ioctl调用cmd匹配问题解决
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- CentOS 上 Jenkins 安装
- solution_169
- linux下安装php扩展
- mysql-5.7.19 zip压缩包安装过程
- JAVA LOG4J使用方法整理
- nginx 多组件安装及secure_link配置与文件下载防盗链的使用(JAVA)
- 超级强大的SVG SMIL animation动画详解
- java 竖线分割字符串的问题
- eclipse15个常用快捷键
- 高德地图Web端JavaScript API开发(一)---地图显示