目录
前言
题目描述
思路分析:
代码实现:
总结
前言
今天继续给大家带来题目的讲解
题目描述
给定一个大小为 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
进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
思路分析:
0、由于这一题是个oj题,所以不用头文件
1、我们先看题目进行分析,需要返回一个int类型的数
2、题目给的是vector的数组别名是nums
3、我一开始想,这么简单直接两层循环找出现超过数组长度一半的不就行了,然后点了运行,发现没有问题
结果他给了个全是1,并且超级长的测试用例
4、然后我就想到了另外一个方法,先用sort将其排序,然后由于经过排序后,数量最多的会位于数组中间位置,然后我们直接返回这个下标的数就可以了
代码实现:
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
int k=nums.size()/2;
return nums[k];
}
};
总结
欧克,关于这一题的讲解就结束了,后续我会带来更多优质的内容,喜欢的可以点个赞支持一下呀!