2024.9.4 leetcode169 多數元素 (C++)

树宝2021發表於2024-09-04

題面

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

相關文章