64,081
社区成员
发帖
与我相关
我的任务
分享
看了很多指针的解法,但是自己指针掌握的太烂了,写的时候报了很多错。所以就用了其他的方法,大多是对vector的操作。等我摸清楚指针之后,会在自己的博客中专门更一篇这几道题的指针解法。
这一题就是对vector 的插入操作
#include<vector>
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
vector<int> ans;
for(int i = 0; i < n; i ++){
ans.push_back(nums[i]);//在数组最后添加num[i]
ans.push_back(nums[n + i]);
}
return ans;
}
};
两次遍历并push_back
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
vector<int> ans;
int size = nums.size();
for(int i = 0; i < size; i++) ans.push_back(nums[i]);
for(int i = 0; i < size; i++) ans.push_back(nums[i]);
return ans;
}
};
这一题也是在数组最后依次添加就好了
class Solution {
public:
vector<int> buildArray(vector<int>& nums) {
vector<int> ans;
int size = nums.size();
for(int i = 0; i < size; i++) ans.push_back(nums[nums[i]]);
return ans;
}
};
更改数组本身
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
int size = nums.size();
for(int i = 1; i < size; i++) {
nums[i] += nums[i - 1];//前面加上自己所有元素的和
}
return nums;
}
};
这题是字符串的截取和拼接
class Solution {
public:
string reverseLeftWords(string s, int n) {
string a1 = s.substr(0, n);
string a2 = s.substr(n);
return a2 + a1;
}
};