PAT_甲级_1029 Median (25分) (C++)【求中位数/递增序列合并】

目录

1,题目描述

题目大意

2,思路

3,代码


1,题目描述

Sample Input:

4 11 12 13 14
5 9 10 15 16 17

 

Sample Output:

13

题目大意

求两递增序列的中位数(合并之后的)。

 

2,思路

递增序列合并,而且只需输出中位数即可(位于(num1+num2+1)/ 2的元素)。

  • 先接受第一行数据,并计算出mid;
  • 逐个接受第二行数据temp。当数组1当前下标对应的元素小于temp时,就将其放入vector<int> ans中,否则将temp放入ans中。直到ans.size()达到mid时,输出ans[mid-1]。
  • 若第二个数组提前遍历完毕(测试点6),遍历第一个数组的剩余元素,直到ans.size()==mid时,输出ans[mid-1]。

3,代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
//#ifdef ONLINE_JUDGE
//#else
//    freopen("1.txt", "r", stdin);
//#endif

    int num1, num2, index = 0, mid;
    int input[200001], tem;
    vector<int> ans;
    scanf("%d", &num1);
    for(int i = 0; i < num1; i++) scanf("%d", &input[i]);
    
    scanf("%d", &num2);
    mid = (num1 + num2 + 1) / 2;                        //中位数的位置
    
    for(int i = 0; i < num2; i++){
        scanf("%d", &tem);
        while(index < num1 && input[index] <= tem){
            ans.push_back(input[index++]);
            if(ans.size() == mid){                      //只要达到mid就输出
                cout<<ans[mid - 1];
                return 0;
            }
        }
        ans.push_back(tem);
        if(ans.size() == mid){                          //只要达到mid就输出
            cout<<ans[mid - 1];
            return 0;
        }
    }
    while(index < num1){                                //若第二个数组已经遍历完毕 仍未到达mid
        ans.push_back(input[index++]);
        if(ans.size() == mid){
            cout<<ans[mid - 1];
            return 0;
        }
    }


    return 0;
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值