一、题目:
函数原型:
int majorityElement(int* nums, int numsSize)
参数解释:
int *nums是一个指针,用于接收数组名
int numsSize是数组的元素个数
二、思路:用同归于尽消杀法:
因为题目条件给出多数元素的个数大于总个数的50%,所以可以假设存在多个阵营,一个是多数元素的阵营,其他的则是非多数元素的阵营。
1.假设存在阵地,初始时无人占领,每次都会有一个阵营的士兵去争夺阵地
2.若阵地无人,则属于先到的士兵所属阵营;若阵营中有人,同阵营的则一起守阵地,守阵地人数增加,不同阵营的,则与其同归于尽,守阵地人数减少
3.由于多数元素的阵营的士兵大于其他阵营士兵的总和,因此所有士兵同归于尽后最后剩下的一定是多数元素阵营的士兵
三、代码:
cppint majorityElement(int* nums, int numsSize){ int result=0; int count=0; for(int i=0;i<numsSize;i++) { if(count==0)//判断阵地有无人 { result=nums[i]; count++; } else { if(nums[i]==result)//阵地有人,且是同阵营的 { count++;//守阵地人数增加1 } else//阵地有人,但是其他阵营的 { count--;//与其同归于尽,守阵地人数减少1 } } } return result;//最终剩下的一定是多数元素阵营的,即多数元素,返回多数元素 }
leetcode:169. 多数元素(同归于尽消杀法)
南林yan2023-10-12 23:47
相关推荐
sheeta199830 分钟前
LeetCode 补拙笔记 日期:2026.06.07 题目:128. 最长连续序列sheeta19981 小时前
LeetCode 补拙笔记 日期:2026.06.07 题目:1. 两数之和柒和远方2 小时前
LeetCode 452. 用最少数量的箭引爆气球 —— 区间贪心经典:排序 + 扫描一箭穿心Zhang~Ling3 小时前
C++ 红黑树封装:myset和mymap的底层实现ECT-OS-JiuHuaShan3 小时前
什么是对和错?——“有针对性定义域的逻辑值的真伪”:认识论终极追问的公理化裁决Merlyn103 小时前
【栈】155. 最小栈一个不知名程序员www4 小时前
算法学习入门---算法题DAY5San813_LDD4 小时前
[量化]《虚函数调用时间复杂度完全解析:为什么是 O(1) 以及它的真实代价》MartinYeung54 小时前
[论文学习]利用索引梯度优化基于优化的 LLM 越狱攻击:MAGIC 方法的深度分析与实现pyz6664 小时前
LeetCode - Hot 100 - 滑动窗口最大值