题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805466364755968

注意点

  1. 最坑的一个地方就是其中一个过短导致还没遍历到中位数就已经把其中一个序列遍历完了,解决方法是设置极大数,放在数组最后。
  1. const int INF = 0x7ffffff;
  1. 另外一个地方就是能用数组尽量用数组的方法,用迭代器会出现未知的错误

    代码

    1. #include<algorithm>
    2. #include<iostream>
    3. #include<vector>
    4. using namespace std;
    5. const int INF = 0x7fffffff;
    6. int main(){
    7. vector<int> list1, list2;
    8. int n, m, temp, mid;
    9. scanf("%d",&n);
    10. for(int i = 0; i < n; i++){
    11. scanf("%d",&temp);
    12. list1.push_back(temp);
    13. }
    14. scanf("%d",&m);
    15. for(int i = 0; i < m; i++){
    16. scanf("%d",&temp);
    17. list2.push_back(temp);
    18. }
    19. list1.push_back(INF),list2.push_back(INF);
    20. mid = (m + n - 1) / 2;
    21. int i = 0, j = 0, count = 0;
    22. while(count < mid){
    23. if(list1[i] < list2[j]) i++;
    24. else j++;
    25. count++;
    26. }
    27. printf("%d",min(list1[i],list2[j]));
    28. }