编写程序输入n个整数,查找并删除重复的数字
时间: 2023-05-31 09:20:38 浏览: 515
### 回答1:
可以使用一个列表来存储输入的n个整数,然后遍历列表,对于每个数字,判断它是否已经出现过,如果出现过,则将它从列表中删除。可以使用一个集合来记录已经出现过的数字,这样判断是否出现过的时间复杂度为O(1)。最后输出剩余的数字即可。
具体实现可以参考以下代码:
```
n = int(input("请输入数字个数:"))
nums = []
for i in range(n):
num = int(input("请输入第{}个数字:".format(i+1)))
nums.append(num)
seen = set()
for num in nums:
if num in seen:
nums.remove(num)
else:
seen.add(num)
print("去重后的数字为:", nums)
```
### 回答2:
编写程序要实现查找并删除重复的数字,可以采用哈希表的思想,将输入的n个整数保存到哈希表中,如果发现重复的数字,就将该数字删除,最后将哈希表中没有被删除的数字输出即可。
具体实现步骤如下:
1.定义一个哈希表,用于保存输入的n个整数,其中哈希表的值初始化为0。
2.输入n个整数,将每个整数通过哈希函数计算出其在哈希表中的位置p,如果该位置上的值为0,说明该数字未出现过,将该数字存放在p位置上;如果该位置上已经有数字,说明该数字已经出现过,将该数字从哈希表中删除。
3.遍历哈希表,将哈希表中所有没有被删除的数字输出即可。
代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#define HASH_SIZE 10000 // 哈希表大小
typedef struct hash_table {
int value; // 存放的值
int flag; // 标记该位置是否已被删除
}HASH_TABLE;
HASH_TABLE hash[HASH_SIZE];
// 哈希函数
int hash_function(int val)
{
return abs(val) % HASH_SIZE;
}
// 插入哈希表
void insert_hash(int val)
{
int pos = hash_function(val);
while (hash[pos].flag && hash[pos].value != val) {
pos = (pos + 1) % HASH_SIZE; // 线性探测
}
hash[pos].value = val; // 存放值
hash[pos].flag = 1; // 标记为已存放
}
// 查找并删除哈希表中的数字
void delete_hash(int val)
{
int pos = hash_function(val);
while (hash[pos].flag) {
if (hash[pos].value == val) {
hash[pos].flag = 0; // 标记为已删除
break;
}
pos = (pos + 1) % HASH_SIZE; // 线性探测
}
}
// 输出哈希表中未被删除的数字
void print_hash(void)
{
for (int i = 0; i < HASH_SIZE; i++) {
if (hash[i].flag) {
printf("%d ", hash[i].value);
}
}
printf("\n");
}
int main(void)
{
int n, val;
scanf("%d", &n);
// 初始化哈希表
for (int i = 0; i < HASH_SIZE; i++) {
hash[i].flag = 0;
}
// 输入n个整数
for (int i = 0; i < n; i++) {
scanf("%d", &val);
if (hash_function(val) < 0) {
printf("Error: value out of range!\n");
break;
}
if (hash[hash_function(val)].flag == 0) {
insert_hash(val);
} else {
delete_hash(val);
}
}
// 输出未被删除的数字
print_hash();
return 0;
}
```
该程序通过哈希表的方式来查找并删除重复的数字,在具有一定量级的情况下,哈希表具有查找速度快的特点,能够更快速地实现去重。
### 回答3:
编写程序输入n个整数,查找并删除重复的数字是一个常见的任务。这个任务可以通过多种方式实现,此处介绍一种基于哈希表的实现。
哈希表是一种数据结构,它将每个键值映射到一个唯一的桶中。通过使用哈希表,我们可以快速查找任何键值,并且不需要考虑键值的数量。
在本任务中,我们可以使用哈希表来记录出现过的所有整数,并从输入中删除重复的整数。具体实现步骤如下:
1. 定义哈希表和一个列表用于存储输入的整数。
2. 从输入中读取n个整数,并将它们加入到列表中。
3. 遍历列表中的每个整数,检查它是否已经出现过。如果是,则将该整数从列表中删除;否则,将该整数添加到哈希表中。
4. 最后,输出列表中剩余的整数。
下面是一个Python实现的代码示例:
```python
n = int(input())
lst = []
hashset = {}
for i in range(n):
x = int(input())
lst.append(x)
for i in range(len(lst)):
if lst[i] in hashset:
del lst[i]
else:
hashset[lst[i]] = True
for x in lst:
print(x)
```
在这个代码中,我们使用哈希表`hashset`来记录出现过的整数,键为整数值,值为True。当我们遍历到一个整数时,我们检查它是否出现在哈希表中。如果是,则删除列表中的这个整数;否则,将其添加到哈希表中。最后,我们输出剩余的整数即为没有重复的数字。
需要注意的一点是,当我们执行`del lst[i]`时,列表的长度会变化。因此,我们需要在下一次循环中i值减1,这样才能正确遍历列表。