多数元素
今天的题目是力扣面试经典150题中的数组的简单题: 多数元素
题目描述
给定一个大小为 n 的数组 nums,其中包含 n 个整数,假设有一个元素出现的次数超过 ⌊ n/2 ⌋ 次,则称之为多数元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
请编写一个程序来找出这个多数元素。
- 注意:
- 数组 nums 的长度为 n。
- 数组中的多数元素出现的次数超过 ⌊ n/2 ⌋ 次。
- 不需要考虑超出新长度以外的元素。
- 示例:
- 输入:
nums = [3,2,3] - 输出:
多数元素为 3 - 解释:
数组 nums 中的值 3 出现了两次,超过了一半的次数。
因此,多数元素为 3。
- 输入:
题目分析
-
确定目标需求:找出多数元素,即出现次数超过数组长度一半的元素。
-
提取题目信息:给定一个大小为
n的数组nums,也就是说我们已知的条件有两个,一个是数组大小n,这个字段我们用于判断元素是否为多数元素,另外就是数组nums,作为元素来源。 -
你可以假设数组是非空的,并且给定的数组总是存在多数元素。这段话提示我们,给定的数组必定会存在多数元素。
-
没有要求不能使用额外空间。
解题思路
没有要求不使用额外空间,那么最容易想到的就是使用map存储元素以及出现次数。
在循环数组时,我们可以同时校验出现次数,因为多数元素是定义超过一半的出现次数,因此这个元素有且只有一个,出现一个即可直接结束循环。
实际算法代码
根据以上分析和思路,我们可以写出以下代码:
public class MajorityElement {
public static void main(String[] args) {
MajorityElement solution = new MajorityElement();
// 示例数据
int[] nums = {
3, 2, 3};

最低0.47元/天 解锁文章
7万+

被折叠的 条评论
为什么被折叠?



