LeetCode热题HOT100——169.多数元素

169. 多数元素
难度:简单
题目描述:
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

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

示例 1:

输入:nums = [3,2,3]
输出:3
示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2
 

提示:
n == nums.length
1 <= n <= 5 * 104
-109 <= nums[i] <= 109

排序思路
既然数组中有出现次数 > ⌊ n/2 ⌋ 的元素,那排好序之后的数组中,相同元素 总是 相邻 的。 即存在长度 > ⌊ n/2 ⌋ 的一长串 由 相同元素 构成的 连续子数组。 举个例子: 无论是 1 1 1 2 3,0 1 1 1 2 还是 -1 0 1 1 1,数组中间的元素总是“多数元素”,毕竟它长度 > ⌊ n/2 ⌋

class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length >> 1];
    }
}

你可能感兴趣的:(点子的刷题记录,leetcode,算法,数据结构)