1.众数是指数组[n]中出现次数大于n/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. };

2.常见意义上的众数

解法:

1.当数组大小为1,输出arr[0]即可;
2.数组大小为2,如果相等,输出arr[0];反之输出arr[0],arr[1];
3.数组大小大于2时:
1)将数组从小到大排列;
2)将数组去重并统计每个数字出现次数;
3)求出最大的次数;
4)输出最大次数对应的数字(可能不止一个);

代码:不懂!

  1. #include "iostream"
  2. #include "stdlib.h"
  3. #include <vector>
  4. #include <algorithm>
  5. using namespace std;
  6. /************ 求数组中的众数 *************/
  7. vector<int> majorityElement(vector<int> arr) {
  8. vector<int> numSet;
  9. vector<int> count;
  10. vector<int> res;
  11. numSet.push_back(arr[0]);
  12. count.push_back(1);
  13. /*if (arr.size() < 1)
  14. {
  15. res.push_back([]);
  16. return;
  17. }//return NULL;
  18. else */if (arr.size() == 1)
  19. {
  20. res.push_back(arr[0]);
  21. return res;
  22. }//当数组大小为1时
  23. else if (arr.size() == 2)
  24. {
  25. res.push_back(arr[0]);
  26. if (arr[0] != arr[1])
  27. {
  28. res.push_back(arr[1]);
  29. }
  30. return res;
  31. } //当数组大小为2时
  32. //当数组大小大于等于三时
  33. sort(arr.begin(), arr.end()); //先排序
  34. int m = 0;
  35. for (int i = 1; i < arr.size(); i++)
  36. {
  37. if (arr[i] != arr[i - 1]) {
  38. numSet.push_back(arr[i]);//记录下不重复的值
  39. count.push_back(1); //并将次数赋值为1
  40. m++;
  41. }
  42. else
  43. count[m]++; //当和前值相等时,次数加1
  44. }
  45. int max = count[0];
  46. for (int i = 0; i < count.size(); i++) //求出最大的次数
  47. {
  48. if (max < count[i])
  49. max = count[i];
  50. }
  51. for (int i = 0; i < count.size(); i++) //输出次数最大的值
  52. {
  53. if (count[i] == max)
  54. res.push_back(numSet[i]);
  55. }
  56. return res;
  57. //cout << arr[i] << ' ';
  58. }
  59. int main()
  60. {
  61. vector <int> arr = {12, 2, 5, 6, 21};//{ 1, 2, 2, 2, 4, 6, 6, 8, 11 };
  62. vector<int> res;
  63. res = majorityElement(arr);
  64. for (int i = 0; i < res.size(); i++)
  65. {
  66. cout << res[i] << ' ';
  67. }
  68. system("pause");
  69. return 0;