这是一个简单的问题,描述如下:
给定一个大小为 n 的数组 nums,返回多数元素。
多数元素是出现超过 ⌊n/2⌋ 次的元素。您可以假设多数元素始终存在于数组中。
示例1:
输入:nums = [3,2,3]
输出:3示例2:
输入:nums = [2,2,1,1,1,2,2]
输出:2约束:
n == nums.length
1 -109
乍一看,您会考虑制作一张地图,然后收集显示最多的地图。
再想一想,如果你可以排序并找到出现最多的那个就可以了。
还有一个更简单的方法。如果您仔细阅读说明,您会明白多数元素是出现在数组中超过一半的元素。
考虑到这一点,如果你对其进行排序并获取中间的索引,那就可以解决问题:
class Solution { public int majorityElement(int[] nums) { // sort Arrays.sort(nums); // if by majority element it means that appears more than half of nums size // then picking the middle element would be the one that's a majority element return nums[nums.length / 2]; } }
运行时间:4 ms,比 Java 在线提交的多数元素的 54.53% 快。
内存使用:53.5 MB,少于 Java 在线提交的多数元素的 9.23%。
—
就是这样!如果还有什么要讨论的,请随时发表评论,如果我错过了任何内容,请告诉我,以便我进行相应更新。
直到下一篇文章! :)
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3