题目:
给你一个以行程长度编码压缩的整数列表 nums 。
考虑每对相邻的两个元素 [a, b] = [nums[2*i], nums[2*i+1]] (其中 i >= 0 ),每一对都表示解压后有 a 个值为 b 的元素。
请你返回解压后的列表。
示例:
输入:nums = [1,2,3,4]
输出:[2,4,4,4]
解释:第一对 [1,2] 代表着 2 的出现频次为 1,所以生成数组 [2]。
第二对 [3,4] 代表着 4 的出现频次为 3,所以生成数组 [4,4,4]。
最后将它们串联到一起 [2] + [4,4,4] = [2,4,4,4]。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/decompress-run-length-encoded-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
第一次:
class Solution {
public:
vector<int> decompressRLElist(vector<int>& nums) {
vector<int> v;
for (int i = 0; i <= (nums.size() >> 1) - 1; ++i) {
vector<int> tmpV(nums[i << 1],nums[(i << 1) + 1]);
v.insert(v.end(),tmpV.begin(),tmpV.end());
}
return v;
}
};
总结:
1. vector 可以使用 insert 链接两个 vector 用法如上述,v.insert(v.end(),tmpV.begin(),tmpV.end()) 将tmpV 链接在 v 后面;
2. vector 构造函数可以直接设置长度 和 初始化值(特定数值,其他vector的 iterator ,其他vector, 数组),下图转自:http://www.cplusplus.com/reference/vector/vector/vector/
// constructing vectors
#include <iostream>
#include <vector>
int main ()
{
// constructors used in the same order as described above:
std::vector<int> first; // empty vector of ints
std::vector<int> second (4,100); // four ints with value 100
std::vector<int> third (second.begin(),second.end()); // iterating through second
std::vector<int> fourth (third); // a copy of third
// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );
std::cout << "The contents of fifth are:";
for (std::vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
first second third fourth 均是 4个 100
Output:
|