题目

代码
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
int i = 0;
// int size = nums.size();
// while(i<size){//这里不可以直接用nums.size(),随着插入它会逐渐变大
// nums.push_back(nums[i]);
// i++;
// }
// return nums;
vector<int> ans;
while(i<nums.size()){
ans.push_back(nums[i]);
i++;
}
i = 0;
while(i<nums.size()){
ans.push_back(nums[i]);
i++;
}
return ans;
}
};
思路
本题目就是将给定的数组拷贝一份,两份连接起来,形成一个新的数组并返回。
不过,有原地算法和创建新数组两种。
反思
1.考察知识点:vector顺序表、顺序表的插入
2.踩的坑:一开始用的是原地算法,结果条件直接用的是nums.size(),这导致在插入的过程中,这个值一直在变大,使得循环无法结束;另外,由于这个题目对于时间复杂度的限制并不是很苛刻,所以优先考虑运行时间的话,新建一个新的数组比较好,原因在于vector原地扩容的“拷贝开销”和新数组直接填充
3.可以优化的地方:无。
1375

被折叠的 条评论
为什么被折叠?



