你写的代码超时了,请改进一下
时间: 2024-03-22 19:38:22 浏览: 13
好的,为了优化程序的时间复杂度,我们可以使用哈希表(Hash Table)来实现。哈希表是一种利用哈希函数将某个键值映射到对应的存储位置的数据结构,可以实现快速的查找,插入和删除操作。
这里我们可以使用C语言中的unordered_set来实现哈希表:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unordered_set>
#define MAX_SIZE 100000
int main() {
int nums[MAX_SIZE], n, i;
scanf("%d", &n); // 读入整数个数
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]); // 读入每个整数
}
std::unordered_set<int> s;
bool flag = false;
for (i = 0; i < n; i++) {
if (s.find(nums[i]) != s.end()) { // 如果存在重复的数据
flag = true;
break;
}
s.insert(nums[i]);
}
if (flag) {
printf("YES\n");
} else {
printf("NO\n");
}
return 0;
}
```
这个程序的思路是:首先读入整数个数和每个整数,然后定义一个unordered_set,用于存储已经出现过的整数。接着遍历整个数组,如果当前整数在unordered_set中已经存在,说明存在重复的数据,就将flag标记为true,跳出循环。否则,将当前整数插入unordered_set中。最后,根据flag的值输出"YES"或"NO"。
使用unordered_set可以将查找时间从O(N^2)降到O(N),大大提升了程序的效率。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)