网站建设 英语翻译,网站建设进项填那个服务,口碑好的网站建设服务,广宁住房和城乡建设局网站一、题目描述 给定一个大小为 n 的数组 nums #xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的#xff0c;并且给定的数组总是存在多数元素。
二、测试用例
示例 1#xff1a;
输入#xff1a;nums [3,2,…一、题目描述 给定一个大小为 n 的数组 nums 返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的并且给定的数组总是存在多数元素。
二、测试用例
示例 1
输入nums [3,2,3]
输出3示例 2
输入nums [2,2,1,1,1,2,2]
输出2三、解题思路
基本思路题目保证数组非空且一定存在多数元素则可以考虑打擂台具体思路先确定擂主 x 初始化为数组第一个元素再确定擂主血量 count 初始化为 1 。接下来遍历序列每遇到一个元素判断是否和擂主相同相同表示朋友擂主血量 count 1 不同表示敌人擂主血量 count - 1 一旦擂主血量归 0 表示守擂失败则新元素成为擂主血量置为 1 继续守擂直到遍历结束擂主就是多数元素。【不同元素相互抵消如果抵消的多数元素则多数元素血量还是最高的如果相互抵消的不是多数元素则多数元素血量还是最高的】
四、参考代码
时间复杂度 O ( n ) O(n) O(n) 空间复杂度 O ( 1 ) O(1) O(1)
int majorityElement(vectorint nums) {int xnums[0],count1,nnums.size();for(int i1;in;i){if(xnums[i]){count;}else{count--;if(count0){xnums[i];count1;}}}return x;
}测试结果