题目
给定一个大小为
n
的数组nums
,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋
的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
解题思路
- 利用Arrays自带的函数对数组进行排序;
- 记录起始位置和元素值,当元素值不同时进行计算元素出现次数,符合要求,以当前元素为结果返回,不符合要求则以当前位置为起始点,继续进行遍历。
代码展示
public class Nine {public static void main(String[] args) {Nine nine = new Nine();System.out.println(nine.majorityElement(new int[]{3,2,3}));System.out.println(nine.majorityElement(new int[]{2,2,1,1,1,2,2}));}public int majorityElement(int[] nums) {int n = nums.length;Arrays.sort(nums);int start = 0;int code = nums[0];for (int i = 1; i < n; i++){if(nums[i] != code){if(i - start > n / 2){return code;}code = nums[i];start = i;}}return code;}
}