面试真题
真题1:数组降重
方法一:普通方法
#include <iostream>
void removeDuplicates(int array[], int& length) {
int index = 0;
for (int i = 0; i < length; i++) {
// 开始遍历原始数组中的元素
bool isDuplicate = false;
for (int j = 0; j < index; j++) {
// 对于每个元素 array[i],再次遍历去重后的数组(即前面已经处理过的部分),查找是否存在相同的元素。
// 如果找到相同的元素,则跳出循环,不做任何操作。
if (array[i] == array[j]) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
array[index++] = array[i];
}
}
length = index;
}
int main() {
int array[5] = {
4, 2, 2, 1, 2 };
int length = 5;
std::cout << "原始数组:" << std::endl;
for (int i = 0; i < length; i++) {
std::cout << array[i] << " ";
}
std::cout << std::endl;
removeDuplicates(array, length);
std::cout << "去重后的数组:" << std::endl;
for (int i = 0; i < length; i++) {
std::cout << array[i] << " ";
}
std::cout << std::endl;
return 0;
}
方法二:使用STL
#include <iostream>
#include <unordered_set>
int main() {
int array[5] = {
4, 2, 2, 1, 2 };
int length = 5;
std::unordered_set<int> uniqueSet;
for (int i = 0; i < length; i++) {
uniqueSet.insert(array[i]);
}
std::cout << "去重后的数组:" <