2.删除数组中所有重复元素 输入样例: 5 1 3 1 2 3 输出样例: 1 3 2
时间: 2024-09-21 17:12:20 浏览: 40
删除数组中的重复元素通常涉及到遍历数组并使用某种数据结构(如集合或哈希表)来跟踪已经遇到过的值。这里有一个简单的Python示例,使用列表推导式来实现这个功能:
```python
def remove_duplicates(arr):
return list(set(arr))
# 示例
arr = [1, 3, 1, 2, 3]
result = remove_duplicates(arr)
print("Output:", result)
```
在这个例子中,`set()`函数用于去除重复项,因为集合内的元素都是唯一的。然后我们将结果转换回列表以便保持原始数组的形式。
如果你想要在原地操作数组,可以使用以下方法(适用于数值类型的数组),它利用了数组下标:
```python
def remove_duplicates_in_place(arr):
i = 0
for j in range(1, len(arr)):
if arr[j] not in arr[:i]:
arr[i] = arr[j]
i += 1
arr.pop(i) # 移除多余的元素
return arr
# 示例
arr = [1, 3, 1, 2, 3]
result = remove_duplicates_in_place(arr)
print("Output:", result)
```
相关问题
2.删除数组中所有重复元素 输入样例: 5 1 3 1 2 3 输出样例: 1 3 2 c++ vector <int>,push_back,erase()方法实现
在C++中,我们可以使用`vector`容器以及`push_back()`方法添加元素,并通过`erase()`方法删除重复元素。一种常见的做法是遍历整个向量,对于每个元素,检查它之后是否有相同的元素,如果有则使用`erase()`方法移除后续的重复项。以下是这个过程的一个简短示例:
```cpp
#include <iostream>
#include <vector>
#include <unordered_set>
void removeDuplicates(std::vector<int>& nums) {
std::unordered_set<int> uniqueSet; // 使用无序集合存储唯一元素
for (size_t i = 0; i < nums.size(); ++i) {
if (uniqueSet.find(nums[i]) == uniqueSet.end()) { // 如果元素不在集合中
uniqueSet.insert(nums[i]); // 添加到集合中并保留
nums.erase(nums.begin() + i); // 移除当前索引处的重复元素
i--; // 因为元素数量减少,需要调整下一次循环的起点
}
}
}
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (size_t i = 0; i < n; ++i)
std::cin >> nums[i];
removeDuplicates(nums);
// 输出结果
for (const auto& num : nums)
std::cout << num << " ";
std::cout << "\n";
return 0;
}
```
在这个例子中,我们先创建了一个`std::unordered_set`来存储唯一的整数。然后遍历输入的`vector`,如果遇到的元素还未出现在集合中,就将其加入集合并且保持在`vector`中。如果遇到重复元素,我们就从`vector`中移除它。
c语言输出删掉不同数据元素之后的表中元素,以空格隔开,占一行,输入样例:10 10 10 10 9 7 5 4 4 3 2输出样例:10 9 7 5 4 3 2
在C语言中,你可以通过数组操作和循环遍历来实现这个功能。这里是一个简单的示例程序,它会删除重复的数据元素并按指定顺序输出:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数用于删除重复元素并排序
void remove_duplicates(int arr[], int n) {
if (n <= 1) return;
// 冒泡排序,便于查找重复项
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 输出去重后的元素
for (int i = 0; i < n; i++) {
if (i != 0) printf(" ");
printf("%d", arr[i]);
}
printf("\n");
}
int main() {
int input[] = {10, 10, 10, 10, 9, 7, 5, 4, 4, 3, 2};
int n = sizeof(input) / sizeof(input[0]);
remove_duplicates(input, n);
return 0;
}
```
当你运行这个程序并提供输入数组如`main`函数所示,你会得到预期的输出:
```
10 9 7 5 4 3 2
```