题目要求:
合并两个排序的整数数组甲和乙变成一个新的数组。
样例给出
A = [1,2,3,4],B = [2,4,5,6],返回[1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
代码实现:
使用向量,和其中的的push_back函数
class Solution {
public:
/**
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B)
{
// write your code here
vector<int> C; //声明一个int型变量
int i = 0, j = 0;
while(i<A.size() && j<B.size())
{
if(A[i]<B[j])
{
C.push_back(A[i++]); //在vector数组末尾插入新元素
} //++在后,得到递增之前的结果;++在前,得到递增之后的结果
else
{
C.push_back(B[j++]);
}
}
while(i<A.size())
{
C.push_back(A[i++]);
}
while(j<B.size())
{
C.push_back(B[j++]);
}
return C;
}
};
代码分析:
- vector数组是一个能存放任意数据类型(类,结构,普通变量类型等)的动态数组;
- 在定义的数组中插入元素:
使用push_back()函数,作用是在vector数组的末尾插入新元素。函数中的插入元素的类型要和vector数组中定义的类型一致,这里是int类型。
格式: C.push_back()
拓展:
- 删除数组元素: pop_back()函数 : 删除最后一个元素
- 清除所有元素: clear()
- 判断数组是否为空: empty()