class Solution {
public:
vector<int> decompressRLElist(vector<int>& nums) {
vector<int> pusher;
for(int i = 0; i<nums.size(); i+=2){
pusher.push_back(nums.at(i*nums.at(i+1)));
}
return pusher;
}
}
我认为向量一开始是空的。因此,使用push_back
向其中插入元素应该没有问题
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 8) >= this->size() (which is 4)
首先,在这一行
pusher.push_back(nums.at(i*nums.at(i+1)));
你不知道A[i+1]
会有什么数字,这里是nums.at(i+1)
,它会乘以i
。假设您的i = 5
、size = 10
和A[i + 1] = 6
,那么pusher.push_back(nums.at(5*6))
将自动超出范围,为5*6=30,而size = 10
的大小。
其次,如果你想访问循环中的i + 1
索引,你必须考虑,循环终止条件关闭1。
for(int i = 0; i<nums.size() - 1; i+=2)
但这对你来说是行不通的。因为循环中的代码是完全有缺陷的。由于你没有提到你想做什么,所以我不能告诉你解决方案。