题解 | #有序序列合并#

有序序列合并

https://ac.nowcoder.com/acm/problem/25323

双指针法

#include <stdio.h>

int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    
    int a[n],b[m];//牛客可用变长数组
    for(int i = 0; i < n; i++)
        scanf("%d",&a[i]);
    for(int i = 0; i < m; i++)
        scanf("%d",&b[i]);
    int add[n+m];
    int i = 0,j = 0;//分别指向两个数组的第一个元素
    int l = 0;
    while(i < n && j < m)
    {
        if(a[i] < b[j])
            add[l++] = a[i++];
        else 
            add[l++] = b[j++];
    }
    //还要考虑数组a或数组b中剩下的元素
    while(i < n)
    {
        add[l++] = a[i++];
    }
    while(j < m)
    {
        add[l++] = b[j++];
    }
    for(int e = 0; e < n+m; e++)
        printf("%d ",add[e]);
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务