正能量不良网站免费软件下载,中信建设有限责任公司阿尔及利亚,12306网站服务时间,建网站域名怎么买leetcode原题链接#xff1a;多数元素
题目描述 给定一个大小为 n 的数组 nums #xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的#xff0c;并且给定的数组总是存在多数元素。
示例 1#xff1a;
输入多数元素
题目描述 给定一个大小为 n 的数组 nums 返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的并且给定的数组总是存在多数元素。
示例 1
输入nums [3,2,3]
输出3
示例 2
输入nums [2,2,1,1,1,2,2]
输出2提示
n nums.length1 n 5 * 104-109 nums[i] 109
进阶尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。 解题方法用两个变量分别保存结果result和当前正在扫描的某一个数字的总数count。
1. 遍历数组当遇到跟结果变量result相同的数字时加一遇到跟result不同的数字时减一。
2. 当count为0的时候重新更新result的值。
C代码
#include iostream
#include vectorclass Solution {
public:int majorityElement(std::vectorint nums) {int n nums.size();if (n 0) {return -1;}int result 0;int count 0; //记录当前未被消除的数字for (auto num : nums) {if (count 0) { // 每次优势票清0后重新选举新的元素result num;count;} else if (num result) { //count不等于0且当前扫描的元素是优势票,则继续加强优势票的计数count;} else { // count不等于0且当前扫描的元素非优势票,则削弱优势票的计数count--;}}return result;}
};