Leetcode169-多数元素详解

  往期博客:

Leetcode1-两数之和详解

Leetcode2-两数相加代码详解

Leetcode20-有效的括号详解

Leetcode21-合并两个有序链表详解

Leetcode22-有效括号生成详解

Leetcode24-两两交换链表中的节点详解

Leetcode27-移除元素详解

Leetcode46-全排列详解

Leetcode49-字母异位分组详解

Leetcode53-最大子数组和详解

Leetcode56-合并区间详解

LeetCode57-插入区间详解

Leetcode77-组合详解

Leetcode78-子集详解

Leetcode90-子集II详解

Leetcode94-二叉树的中序遍历详解

Leetcode102-二叉树的层序遍历详解

Leetcode107-二叉树的层序遍历II详解


目录

题目

示例

解析

排序法

 哈希表

代码

排序法

哈西表


题目

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

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

出现次数大于n/2,表明该元素个数占整个数组的一半以上

示例

示例1

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

示例2

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

解析

排序法

既然多数元素占一半以上,那么将整个数组排序后,处于数组中间的元素即为多数元素

 哈希表

从头到尾遍历整个数组,记录每个数字出现的次数,key为元素,value为出现的次数,value最大的元素为多数元素

 


代码

排序法

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums.sort()  # 排序
        half = len(nums) // 2
        return nums[half]

哈西表

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        mapping = {}
        for num in nums:
            if num not in mapping:
                mapping[num] = 0
            mapping[num] = mapping.get(num)+1
        half = len(nums) // 2
        for key in mapping.keys():
            if mapping[key] > half:
                return key
        return -1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值