LeetCode169.多数元素

目录

 一.错误思路分析

二.正确思路


题目icon-default.png?t=N176https://leetcode.cn/problems/majority-element/comments/

LeetCode169.多数元素_第1张图片

 一.错误思路分析

 第一次做这个题的反应就是设置一个数组来计数,如果计数大于n/2就找到了。

LeetCode169.多数元素_第2张图片

LeetCode169.多数元素_第3张图片 LeetCode169.多数元素_第4张图片

leetcode的两个案例能通过,但是当元素里有负数的时候,数组会访问越界

LeetCode169.多数元素_第5张图片LeetCode169.多数元素_第6张图片 

所以这个方法行不通。

二.正确思路

从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开始计数,总能找到最多的那个 。

int majorityElement(int* nums, int numsSize)
{
   int count=1;
   int key=nums[0];
   int i=0;
   for(i=1;i

这样就不会存在越界,而且这个方法的效率更高,也节省了许多空间 。

 

 

 

 

 

你可能感兴趣的:(刷题全集,c语言,leetcode,算法)