2016.5.18——leetcode:Majority Element
Majority Element
本题收获:
1.初步了解hash,nth_element的用法
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.
题目中已经假定了数组非空,且>n/2的值存在。题目中的隐含这个元素只有一个(一共n个数,大于n/2的肯定只有一个)。
思路:
我的思路:遍历数组,将数组中个数超过n/2的返回。
leetcode/dicuss思路:这道题有很多思路,我只写下来,我认为比较易懂的思路和代码。
1.比较取巧的思路,每次左抵消,,最后留下来的那个数就是要找的元素。
2.hash映射,将元素和次数作为一个hash,把次数大于n/2的返回。
3.利用nth_element,直接找到排序后位于第n/2的位置的元素。原因:如果一个数出现的次数大于n/2,那么他排序后一定位于第n/2的位置。
代码:
代码1:思路1代码
public class Solution {
public int majorityElement(int[] num) {
int major=num[], count = ; for(int i=; i<num.length;i++){ //从第2个元素开始,此时major和count都有值
if(count==){ //第一次肯定不进这个循环,因为count初始值位1
count++;
major=num[i];
}else if(major==num[i]){
count++;
}else count--;
} return major;
}
}
举个例子看代码:
给定数组[1,2,1,2,1,1,3] 初始major =1,count = 1
第一次循环 count-- count = 0 | 第二次循环 进入count ==0 这个if语句,count =1,major =1|第三次循环 count = 0 | 第四次循环 count =1,major =1|
第五次循环 count =2,major =1 |第六次循环 count = 1,major =1
返回 1
因为 1 出现的次数大于n/2,和其他元素抵消后,剩余的必然是出现次数最多的那个。 要注意的就是 major的设置!!!
代码2:思路2的代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
unordered_map<int, int> counts; //map
int n = nums.size();
for (int i = ; i < n; i++)
if (++counts[nums[i]] > n / ) //以nums中的不同数字为key,count[数字]为value
return nums[i];
}
};
首先map的初始化:
aaarticlea/png;base64,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" alt="" />
具体map的知识参考:http://www.tuicool.com/articles/eqAjIfa
第七行的代码也等价于如下:
for (int i = ; i < n; i++)
++counts[nums[i]]; //等价于if (++counts[nums[i]] > n / 2)
if (counts[nums[i]] > n / )
return nums[i];
给定数组[1,2,1,2,1,1,3] counts[1] = 4 counts[2] = 2 counts[3] = 1,所以说是以数字为key的,以数字出现的次数为value.
代码3:思路3的代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
nth_element(nums.begin(), nums.begin() + nums.size() / , nums.end());
return nums[nums.size() / ];
}
};
有关:
- STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end) 方法可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),
- 并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的,
- 要注意的是,此函数只是将第nth大的元素排好了位置,但并没有返回值,所以要知道第nth大的元素 还得进行一步,cout<<iarray[nth]<<endl; nth既那个位子
关于nth_element()可参考;http://blog.csdn.net/guofengzai/article/details/2574225
http://blog.csdn.net/huaxiangsl/article/details/5639437
我自己的代码:带main函数,可运行
// Majority Element.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "iostream"
#include "unordered_map" //unordered_map<int, int> counts的头文件
#include "vector" //vector的头文件
#include "string" //在这里面貌似没有什么用
#include "algorithm" //nth_element的头文件
using namespace std;
/*
class MyClass
{
public:
int majorityElement(vector<int>& nums)
{
int major = nums[0], counts = 1;
int n = nums.size();
for (int i = 1; i < n; i++)
{
if (major == nums[i])
{
++counts;
}
else if (major != nums[i])
{
counts--;
}
else if(counts == 0)
{
major = nums[i];
counts = 1;
}
}
return major;
} };*/ class MyClass
{
public:
int majorityElement(vector<int>& nums)
{
unordered_map<int, int> counts;
for (int i = ; i < nums.size(); i++)
{
++counts[nums[i]];
if (counts[nums[i]] > nums.size()/) //上面两行和下面的语句等价
//if (++counts[nums[i]] > nums.size() / 2)
return nums[i];
}
}
};
/*
class MyClass
{
public:
int majorityElement(vector<int>& nums)
{
int n = nums.size();
nth_element(nums.begin(), nums.begin() + n / 2, nums.end()); //注意格式必须是nth_element(start, start+n, end)中间数必须是start+n,否则会出错
return nums[n / 2];
}
};*/ int _tmain(int argc, _TCHAR* argv[])
{
vector<int> nums;
nums = { , , , , , , }; //想测非固定输入,但是vector和之前数组不同,暂时不知道怎么写
int m;
MyClass solution;
m = solution.majorityElement(nums);
cout << m << endl;
system("pause");
return ;
}
运行结果:
aaarticlea/png;base64,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NCcaks0OSmfOi6cHZqb6p6b6p6YGZqbOi6a5QgdlfLlCYl5SPrxqVOLhBXEtmCXpyKJkeF48LBfxByKZOS+eOS+aHpid6p+a6puY6Bkb7xkd6x0f752Y6Juc7J+aOi+aHpTOclnx+zYVWn9aaprhTtF58UGS8FsHJTPnxdNcAAMzUwOzUwOzU+dF07zE0/Vb+6em+iYne8fHey6MdQ9f6Boc6Tw/3Dkw3NE3VFP/UOfAcNfQhZ4L3Lc50T89NTBbPW91GhLOIffdLUq4nwr/rQlHyn8RMwOz0wPTU/1Tk32TE70TE71j4z2jYz1jY32TkwMzU+clM/W51e/eJLCmt6zprZy/XL/12tvvvvf2d95/5zvfe+e7Tfrg3fcEfa9edWnef+c777/znffffve9t9757ptvv/vgrXfuv/XOg7fevv/WW/ff5PXGg2bxm956+/5b79x/+zv333nv/rvvP/juBw++++GD977/4P2PHrz/0YP3Pnrw3vcfvPf9B+99eP+9D++//8H9731w/8MP7v/Zh/f/++/f//OP7v/FR/f/54/u/+VH9//yo/v/0/ff+B8+eOOH773xwbtvfPfd+99598G77z54+9033373/lvv3H/rnftvvv36g7fu3X/ztdfv3733xp17r9957fU7d+/drurWnXu37rx2k9fdm3fu3rzN68atOzdu3bku6Obta/W6cYvTq9dvCnqF07WaXr52o0GvXm8Qt/L6jVeu33z15s1rt25du3Pn+mt3rt+7e+Peazdef+3GG6/duM/p3o37927ev3ejpuqmN1678frd6/fuXLtz59Xbt165eeuVmzdfuXHz5Rs3X7lx89Vbt169c/va3TvXXrtz/d6d6/fuXn/97vXX716/t1+1rdVy7918cO/mg3s336zqAa+6GA4JqU7X33itWuKda6/duXb39qt3br965/a1amDX6gPj0r9x9/ob1TXV9VxUQgz1UXGFCod2jSvozu1Xb9965dbNV27efOXWzVdu3Xr1Nn82rt+7c/2Nu01xHhx2k+5V869T05nkS3/tzrW7h+n2tTv8SRAifPnGjZev33j52vWXrl1/6dVGXbv+8vUb3FG8eufWtbu3r71Wd8aaTlH9d1f/xQlfUPXr4CO8c/vVO7dqJ+rmzVdv37p2p6EIPs9DThRQ6XhzuX7rbgiJnWnrPNvWdbat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" alt="" />
vector的动态输入暂时还不知道怎么写,如果后续知道的话,会补上。
在上节2015.5.18——leetcode:Majority Element中纠结vector的动态输入输出问题,但是发现vector传参型的不可以动态输入输出,但是vector可以,在下一节中附上了代码。
如果有谁写出了,这道题的动态测试,请告知我,非常感谢!
2016.5.18——leetcode:Majority Element的更多相关文章
- [LeetCode] Majority Element II 求众数之二
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
- [LeetCode] Majority Element 求众数
Given an array of size n, find the majority element. The majority element is the element that appear ...
- LeetCode Majority Element I && II
原题链接在这里:Majority Element I,Majority Element II 对于Majority Element I 来说,有多重解法. Method 1:最容易想到的就是用Hash ...
- [LeetCode] Majority Element II 求大多数之二
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
- [LeetCode] Majority Element 求大多数
Given an array of size n, find the majority element. The majority element is the element that appear ...
- LeetCode Majority Element I
原题链接在这里:https://leetcode.com/problems/majority-element/ 题目: Given an array of size n, find the major ...
- LeetCode——Majority Element
在一个数组中找到主要的元素,也就是出现次数大于数组长度一半的元素.容易想到的方式就是计数,出现次数最多的就是majority element,其次就是排序,中间的就是majority element. ...
- LeetCode Majority Element Python
Given an array of size n, find the majority element. The majority element is the element that appear ...
- Leetcode: Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
随机推荐
- lepus天兔数据库监控
本篇文章的前提是服务器装了mysql服务.git,我这边就不写出来了,自行百度,装下mysql服务,比较简单 一.安装LAMP基础环境 Xampp下载地址:https://www.apachefrie ...
- linux下安装java jdk
第一步:查看java对应版本 yum search java 我自己装的是1.8版本的java包 第二步:装java包 yum install java-1.8.0-ope ...
- js时间戳转换日期格式和日期计算
一.时间戳转换日期 function formatDate(datetime) { // 获取年月日时分秒值 slice(-2)过滤掉大于10日期前面的0 var year = datetime.ge ...
- MySQL命令行导入.sql文件遇到的问题
导入.sql文件的命令行只有一句.但因为.sql文件大,在把本地的.sql文件导入到阿里云服务器的MySQL数据库时遇到了两个问题导入.sql文件的命令(假设数据库名为mydb,用户名root,密码1 ...
- 关于BIO和NIO的理解
摘要: 关于BIO和NIO的理解 最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO.下面是我结合网络资料自己总结的,为了节约时间图示随便画的 ...
- MT【121】耐克数列的估计
已知$\{a_n\}$满足$a_1=1,a_2=2,\dfrac{a_{n+2}}{a_n}=\dfrac{a_{n+1}^2+1}{a_n^2+1}$, 求$[a_{2017}]$_____ 解:容 ...
- vim 折叠的用法
http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 1. 折叠方式 可用选项来设定折叠方式: 可在Vim 配置文件中设置 set ...
- Android Data Binding(数据绑定)用户指南
Android Data Binding(数据绑定)用户指南 http://www.jianshu.com/p/b1df61a4df77 https://github.com/LyndonChin/M ...
- Gogs安装配置(快速搭建版)转载
gogs官网 oschina gogs介绍 一句话描述: 一款极易搭建的自助 Git 服务. 环境 centos7:golang+mysqldb+git 安装配置环境 yum install mysq ...
- PHP变量的传值和引用
问题: 1.PHP变量的存储.取值方式如何? 2.变量赋值时,普通传值和引用传值分别是什么意思?有何区别? 3.unset被赋值的变量会对两种赋值后原值和新值的影响? 变量的存储.取值形式: 变量 ...