pta7-3 去掉重复的数据
时间: 2023-12-10 12:02:32 浏览: 76
题目描述
给定一个长度为 $n$ 的数组 $a$,请你去掉其中的重复元素,只保留出现次数最后一次的元素,然后输出剩余元素的个数以及剩余元素在数组中的位置。
输入格式
第一行包含整数 $n$,表示数组长度。
第二行包含 $n$ 个整数 $a_i$,表示整数数组。
输出格式
第一行输出一个整数,表示去重后剩余元素的个数。
第二行输出一个整数序列,表示剩余元素在原数组中的位置,每个位置后面有一个空格。
数据范围
$1≤n≤10^6,$
$1≤a_i≤10^6$
输入样例:
5
2 3 2 3 1
输出样例:
3
2 4 5
算法1
(哈希表) $O(n)$
时间复杂度
参考文献
python3 代码
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.empty()) return 0;
int i = 0;
for (int j = 1; j < nums.size(); ++j)
if (nums[j] != nums[i])
nums[++i] = nums[j];
return i + 1;
}
};
相关问题
pta7-53删除重复元素
这道题目可以使用 STL 中的 set 容器来实现。具体步骤如下:
1. 定义一个 set 容器用于存储不重复的元素;
2. 依次读入每个元素,如果该元素不在 set 容器中,则将其插入 set 容器中,并输出该元素;
3. 如果该元素已经在 set 容器中,则直接跳过,不进行操作。
下面是示例代码:
```c++
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s; // 定义 set 容器
int n, x;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x; // 读入元素
if (s.find(x) == s.end()) { // 如果该元素不在 set 容器中
s.insert(x); // 将该元素插入 set 容器中
cout << x << " "; // 输出该元素
}
}
return 0;
}
```
当然,你也可以使用其他的数据结构来实现,比如数组、链表等。
PTA R7-3 字符串替换
以下是Python实现字符串替换的代码示例:
```python
# 读入文件内容
content = []
while True:
line = input()
if line == 'end':
break
content.append(line)
# 获取需要替换的字符串和替换后的字符串
old_str, new_str = input().split()
# 替换字符串
for i in range(len(content)):
content[i] = content[i].replace(old_str, new_str)
# 输出替换后的结果
for line in content:
print(line)
```