重新排列数组
问题:
给你一个数组 nums ,数组中有 2n 个元素,按[x1,x2,...,xn,y1,y2,...,yn]
的格式排列。
请你将数组按[x1,y1,x2,y2,...,xn,yn]
格式重新排列,返回重排后的数组。
思路:
重新开辟一块数组地址,将奇数位置(偶数数组下标)存前半部分,偶数位置(奇数数组下标)放后半部分
方案一:数组下标访问法
class Solution {
public:
const vector<int> shuffle(const vector<int>& nums, const int n) {
auto index = 0;
vector<int> res(2 * n, 0);
for(auto i = 0; i < n; ++i){
res[index++] = nums[i];
res[index++] = nums[n + i];
}
return res;
}
};
方案二:动态数组插入法
class Solution {
public:
const vector<int> shuffle(const vector<int>& nums, const int n) {
auto index = 0;
vector<int> res;
for(auto i = 0; i < n; ++i){
res.push_back(nums[i]);
index++;
res.push_back(nums[n + i]);
index++;
}
return res;
}
};