RaymondHuang
RaymondHuang
发布于 2025-04-11 / 4 阅读
0
0

算法刷题笔记

把一个int的每位数字拆分成数组

#include <vector>
#include <algorithm>

int num = 1234;
vector<int> arr;
while (num) {
  arr.emplace_back(num % 10);
  num /= 10;
}

arr; // 输出的是反向数组,即[4, 3, 2, 1]
std::reverse(arr.begin(), arr.end()) // 翻转数组即可变为正向,即[1, 2, 3, 4]

对一个int数组去重

#include <vector>
#include <algorithm>

// 手动去重
vector<int> arr = {1, 2, 2, 2, 3, 3, 4};
sort(arr.begin(), arr.end()); // 必须先排序!
int unique_index = 0;
for (int i = 0; i < arr.size(); i++) {
  if (arr[unique_index] != arr[i]) {
    unique_index++;
    arr[unique_index] = arr[i];
  }
}
arr.resize(unique_index + 1);
arr; // 去重后数组[1, 2, 3, 4]

// 库函数
vector<int> arr = {1, 2, 2, 2, 3, 3, 4};
sort(arr.begin(), arr.end()); // 必须先排序!
// 使用std::unique去除相邻重复元素,返回去重后的最后一个元素的下一个位置
auto it = std::unique(arr.begin(), arr.end());
// 使用erase删除重复的元素
arr.erase(it, arr.end());
arr; // 去重后数组[1, 2, 3, 4]


评论