題面
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 };