题面
https://leetcode.cn/problems/majority-element/description/
解答
一开始想得比较暴力,直接把对应数字当数组下标,遇到对应数字,数组++,但不知道怎么处理-10^9~10^9的数据大小,后来想了一个办法,那就是先排序,再求连续的个数,个数大于n/2的时候,return结果。
太久没接触C++语法、算法和数据结构了,需要复习一下。
1、vector https://blog.csdn.net/qq_41256535/article/details/139160548
2、正常做法是哈希表,官方题解第一个办法也是哈希表: https://blog.csdn.net/m0_73800602/article/details/135759326
1 class Solution { 2 public: 3 int majorityElement(vector<int>& nums) { 4 int n = nums.size(); 5 int ans = n/2; 6 int result=10; 7 sort(nums.begin(),nums.end()); 8 int a=1; 9 if(n==1) 10 { 11 if(nums[0]>0) 12 return nums[0]; 13 } 14 for(int i=0;i<n-1;i++) 15 { 16 if(nums[i]==nums[i+1]) 17 { 18 a++; 19 } 20 else if (a>ans) 21 { 22 return nums[i]; 23 a=1; 24 } 25 if( nums[i]== nums[i+1] && i==n-2) 26 return nums[i]; 27 } 28 return result; 29 } 30 };
标签:10,return,leetcode169,nums,int,2024.9,C++,https From: https://www.cnblogs.com/jkxjkx2000/p/18396289