题目描述:
在一个由自然数 1 - 1000 中某些数字所组成的数组中,每个数字可能出现 零次或者多次。设计一个算法,找出出现次数最多的数字。
解题思路:
- 思路1:两层for循环找出出现最多的数字和次数,时间复杂度O()
- 思路2:通过空间换时间复杂度。一层for循环遍历数组,求出每个数组出现的次数,新开辟一个新的数组,下标为数字,内容为出现的次数,然后一层for循环找到新数组中的最大数组(次数),最后一层for循环打印出出现最多的数字和次数。时间复杂度为O(n)
思路1代码:
#include "pch.h"
#include <iostream>
using namespace std;
//用两次for循环实现,算法复杂度为O(n2)
void search(int a[], int len) {
int num = 0;
int data = 0;
int totalNum = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
if (a[i] =&