一、题目描述:
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:[3,2,3] 输出:3
示例 2:
输入:[2,2,1,1,1,2,2] 输出:2
题目链接:169. 多数元素
二、思路分析:
声明并且初始化用于计录出现的元素次数的变量count,初始值为1;
声明并初始化用于记录出现次数多的元素的值为result,初始值为数组的第一个元素。
遍历数组,分2种情况:
-
value和当前记录的result值相同时,count计数加1;
-
value和当前记录的result值不同时,count计数减1,直到count为0,更改当前记录result,并且给count计数赋值为1
最后返回用于记录出现次数多的元素的result。
三、AC 代码:
class Solution {
func majorityElement(_ nums: [Int]) -> Int {
// 空数组直接返回
if (nums.count < 1) {
return 0;
}
// 声明用于计录出现的元素次数的变量count;
var count : Int = 1;
var result : Int = nums[0];
// 遍历数组中的元素value
// 1. value和当前记录的result值相同时,count计数加1;
// 2. value和当前记录的result值不同时,count计数减1,直到count为0,更改当前记录result,并且给count计数赋值为1
for value in nums {
if (value == result) {
count += 1;
} else {
count -= 1;
if (count == 0) {
result = value;
count = 1;
}
}
}
return result;
}
}
四、参考学习网址
本文正在参与「掘金 3 月闯关活动」, 点击查看 活动详情