leetcode:169. 多数元素(同归于尽消杀法)

一、题目:

leetcode:169. 多数元素(同归于尽消杀法)_第1张图片

 

函数原型:

int majorityElement(int* nums, int numsSize)

参数解释:

int *nums是一个指针,用于接收数组名

int numsSize是数组的元素个数

二、思路:

用同归于尽消杀法:

因为题目条件给出多数元素的个数大于总个数的50%,所以可以假设存在多个阵营,一个是多数元素的阵营,其他的则是非多数元素的阵营。

1.假设存在阵地,初始时无人占领,每次都会有一个阵营的士兵去争夺阵地

2.若阵地无人,则属于先到的士兵所属阵营;若阵营中有人,同阵营的则一起守阵地,守阵地人数增加,不同阵营的,则与其同归于尽,守阵地人数减少

3.由于多数元素的阵营的士兵大于其他阵营士兵的总和,因此所有士兵同归于尽后最后剩下的一定是多数元素阵营的士兵

三、代码:

int majorityElement(int* nums, int numsSize){
    int result=0;
    int count=0;
    for(int i=0;i

你可能感兴趣的:(leetcode刷题训练营,leetcode,算法,职场和发展)