class Solution { public: vector<int> singleNumbers(vector<int> &nums) { vector<int> res; sort(nums.begin(), nums.end()); res.push_back(nums[0]); for (int i = 1; i < nums.size(); i++) { res.push_back(nums[i]); if (nums[i]== *(res.end() - 1)) { res.pop_back(); res.pop_back(); } } return res; } };哪里哟错
时间: 2024-02-14 13:18:18 浏览: 35
在判断重复的地方,应该使用 `res.back()` 而不是 `*(res.end() - 1)`。因为 `res.end() - 1` 是一个迭代器,它指向的是最后一个元素的下一个位置,使用 `*` 取出的值是未定义的,会导致错误。正确的实现应该是这样的:
```
class Solution {
public:
vector<int> singleNumbers(vector<int> &nums)
{
vector<int> res;
sort(nums.begin(), nums.end());
res.push_back(nums[0]);
for (int i = 1; i < nums.size(); i++)
{
res.push_back(nums[i]);
if (nums[i] == res.back())
{
res.pop_back();
res.pop_back();
}
}
return res;
}
};
```
相关问题
c++怎么向 std::vector<int> nums内添加数字
您好!要向 std::vector<int> nums 内添加数字,可以使用 push_back() 函数。具体操作如下:
```
#include <vector>
int main() {
std::vector<int> nums;
nums.push_back(1); // 添加数字 1
nums.push_back(2); // 添加数字 2
nums.push_back(3); // 添加数字 3
return 0;
}
```
在上述代码中,我们先定义了一个空的 std::vector<int> nums,然后使用 push_back() 函数向其内添加数字。使用 push_back() 函数时,只需要在括号内填写要添加的数字即可。
解释代码:vector<int> twoSum(vector<int>& nums, int target)
这是一个函数的定义,其输入参数为一个整数类型的数组 nums 和一个整数 target,输出为一个整数类型的向量 vector<int>。函数名为 twoSum。
该函数的功能是在给定的数组 nums 中寻找两个数的下标,使得这两个数的和等于 target。函数返回的向量包含这两个下标,其中第一个下标小于第二个下标。
例如,如果 nums={2,7,11,15}, target=9,则函数应该返回一个向量 {0,1},因为 nums[0]+nums[1]=2+7=9。