c++ - 基于值从向量中移除元素的时间复杂度
问题描述
我正在尝试一个简单的问题,要求我给定一个 std::vector 整数和一个值,从该向量中删除具有该值的所有元素并返回结果向量的大小。我最终写的代码是
int removeElement(vector<int>& nums, int val) {
for (int i = 0; i < nums.size(); ) {
if (nums[i] == val) {
nums.erase(nums.begin() + i);
} else {
i++;
}
}
return nums.size();
}
但是,在浏览完我的代码之后,这个解决方案实际上是 O(n^2),因为我在循环内删除了向量中的元素吗?
解决方案
推荐阅读
- c# - 防止会话超时重置定期 AJAX 调用 (.NET Framework 4)
- php - Xdebug 连接在 XAMPP 中被重置
- wpf - 在 GridView 内的分组集合中启用组之间的拖放
- r - 从 R 中的列创建循环以进行代码替换
- c# - 如何杀死环境事务?
- java - org.jasypt.exceptions.EncryptionOperationNotPossibleException Jasypt 和 Hibernate 作为 Windows 服务运行
- ruby-on-rails - 邪恶的pdf,无法加载PDF文档
- dataframe - 当一列是 xml 时使用 sparl.read.csv
- python - Python 3.9 安装到 env 但 IPython 继续使用 3.8.5
- wordpress - 从自动标记帖子的功能中排除 WordPress 类别