当前位置: 代码迷 >> 综合 >> LeetCode_169
  详细解决方案

LeetCode_169

热度:18   发布时间:2023-12-17 02:51:43.0

题目:

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ? n/2 ? 的元素。

你可以假设数组是非空的,并且给定的数组总是存在众数。

解析:

本题中定义的众数为出现次数大于? n/2 ?的元素,而且一定存在。那么解题思路是在数组中不断找一对不相等的数,然后删去,最后剩下的数一定是众数。代码如下:

public int majorityElement(int[] nums) {// 连续删除一对相同的数,最后剩下的不可消除的数即为众数。int result = nums[0];// 用于记录众数,假设数组中的第一个数是众数int count = 0;// count为目前可以删除的数的数量。找到一个相同元素则count++,找到一个不同元素则count--;for (int num : nums) {if (num == result)// 如果两个数相同就不能抵消,count++。count++;else {if (count > 0)// 如果两个数不同且可以抵消的数的数量>0,则count--,表示消去一对数。count--;elseresult = num;// 如果两个数不同但目前不可以消除数了,则将该数记录为众数。}}return result;}

 

  相关解决方案