题目 leetcode.cn/
- 给定一个大小为
n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。 - 你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例
- 输入: nums = [3,2,3], 输出: 3
- 输入: nums = [2,2,1,1,1,2,2], 输出: 2
提示
n == nums.length1 <= n <= 5 * Math.pow(10, 4)-Math.pow(10, 9) <= nums[i] <= Math.pow(10, 9)
思路
- 数组长度为
n, 其中多数元素的出现次数大于n / 2,说明多数元素的个数占整个数组的一半还要多 - 可以先给数组排序(升序或者降序都可以), 多数元素一定在排序完的数组中间,返回该元素即可
- 注意:
- 当数组长度为1时,多数元素就是数组的唯一元素
- 数组长度可能为奇数,所以取下标的时候需要取整,为了省略判断数组长度为
1的情况,这里向下取整
代码
function majorityElement(nums: number[]): number {
let nums2 = nums.sort((a, b) => { return a -b });
return nums2[Math.floor(nums.length / 2)];
};
或者
function majorityElement(nums: number[]): number {
let nums2 = nums.sort((a, b) => { return a -b });
return nums2[Math.ceil(nums.length / 2) - 1];
};