算法:多数元素(排序和Boyer Moore投票算法)
2023-12-13 05:44:10
排序?时间复杂度 O(nlog?n) 空间复杂度 O(log?n)
/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function (nums) {
nums = nums.sort()
// 排序之后数组中间的数一定是众数(因为题目说数组中的众数大于 ?nums.length/2?)
return nums.find(item=>item==nums[Math.floor(nums.length/2)])
};
Boyer Moore投票算法?时间复杂度?O(n) 空间复杂度?O(1)?
/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function (nums) {
// 初始化计数器和数量最多的数
let count = 0;
let candidate = null;
for (let item of nums) {
// 如果计数器归零说明之前数量最多的数被后来最多的数给顶掉了
if (count === 0) {
candidate = item;
}
// 如果当前的数等于当前数量最多的数计数器+1
// 否则-1
if (item === candidate) {
count++;
} else {
count--;
}
}
return candidate;
};
文章来源:https://blog.csdn.net/sdhshsjh/article/details/134962091
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!