【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨

题目

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element/
注意,该题在LC中被标注为easy,所以我们更多应该关注的是文章中不断优化的思路和方法。很多时候面试考察的,就是与面试官一起做题并把时间复杂度和空间复杂度压榨到极致的过程中你所表现出来的能力。

你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事网站建设、网站设计、企业网站建设、手机网站制作、网页设计、成都品牌网站建设、网页制作、做网站、建网站。创新互联拥有实力坚强的技术研发团队及素养的视觉设计专才。

1.描述

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊n/2⌋的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

2.示例

  • 示例 1:
	输入:[3,2,3]
	输出:3
  • 示例 2:
	输入:[2,2,1,1,1,2,2]
	输出:2

解法一 排序

解题思路

很快啊,啪的一下我们想到,由于多数元素是指在数组中出现次数 大于 ⌊n/2⌋ 的元素,那么将数组排序后,即便该元素是最小元素或是最大元素,其在数组中的覆盖范围也超过了数组中点(从左到右超过或是从右到左超过)。于是得到算法:

算法

1.将数组排序;
2.返回数组中点元素nums[nums.size()/2].

代码

1 class Solution {
2 public:
3     int majorityElement(vector<int>& nums) {
4         sort(nums.begin(), nums.end());//对数组进行排序
5         return nums[nums.size()/2];//返回数组中点元素
6     }
7 };

文章题目:【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨
本文网址:http://scyanting.com/article/dsogojs.html