当前位置: 首页 > article >正文

PAT甲级-1029 Median

题目

题目大意

给定两个递增序列,求这两个序列合并为一个递增序列后的中位数。

思路

直接用一个数组接收两个数组的输入,然后用sort()暴力求解,也可以过,但是时间复杂度较高。

更好的方法是双指针法,两个数组各一个指针来依次遍历,用一个count计数是否遍历到了中间位置,注意奇数个和偶数个的中间位置不一样。统一起来的表达式就是 (n1 + n2) / 2 + (n1 + n2) % 2 - 1。

代码

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

int main(){
    long long n1, n2;
    cin >> n1;
    vector<long long> v1(n1);
    for (long long i = 0; i < n1; i++){
        cin >> v1[i];
    }
    cin >> n2;
    vector<long long> v2(n2);
    for (long long i = 0; i < n2; i++){
        cin >> v2[i];
    }

    long long i = 0, j = 0, m, mpos, count = 0;
    mpos = (n1 + n2) / 2 + (n1 + n2) % 2 - 1; // 如果是偶数,/2后-1,如果奇数,/2
    while (i < n1 && j < n2 && count <= mpos){
        if (v1[i] < v2[j]){
            m = v1[i];
            i++;
        }else{
            m = v2[j];
            j++;
        }
        count++;
    }
    while (i < n1 && count <= mpos){
        m = v1[i];
        i++;
        count++;
    }
    while(j < n2 && count <= mpos){
        m = v2[j];
        j++;
        count++;
    }
    cout << m << endl;

    return 0;
}  // 双指针法


http://www.kler.cn/a/296714.html

相关文章:

  • AndroidStudio清除重置Http Proxy代理的方式
  • 论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS
  • HRGraph: 利用大型语言模型(LLMs)构建基于信息传播的HR数据知识图谱与职位推荐
  • 3.创建型设计模式详解:生成器模式与原型模式的深度解析
  • 如何在VSCODE中查看西门子PLC的SCL程序?
  • 达梦数据库:dm与mysql语法差异(select)
  • CAP (C# Distributed Application Framework)
  • [Linux Kernel Block Layer第一篇] block layer架构设计
  • Spring Boot项目中如何解决循环依赖
  • 大模型构建合作性的Agent,多代理框架MetaGpt
  • QT 读取Excel表
  • Flask如何创建并运行数据库迁移
  • 【系统架构设计师-2012年】综合知识-答案及详解
  • 【系统架构设计师】工厂方法设计模式
  • 使用PyTorch Lightning力量精简空间分析
  • leetcode hot100_part17_技巧篇
  • docker 安装NextERP
  • Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法
  • 电脑驱动分类
  • 大模型训练框架LLaMAFactory覆盖预训练指令微调强化学习评估全流程