【编程题】腾讯笔试第一题(Java实现)

【编程题】腾讯笔试第一题(Java实现)

题目描述

有一天,小Q发现了n个被上锁的宝箱和m串钥匙。第i个宝箱上写着一个整数a,第串钥匙上写着一个整数b。 小Q已经通过一些古籍得知了这些宝箱内有很多的珍贵的宝物。所以他想尽可能多地打开这些宝箱。
当且仅当第i个宝箱上的数字ai;与第j串钥匙上的数字bj;之和为奇数的时候,这个宝箱才能被这串钥匙打开。每个宝箱只能被打开一次,且每一串钥匙也只能被使用一次。
现在小Q想知道他最多能开多少个宝箱,请你帮他计算出这个结果。
输入描述:
第一行两个整数,n和m,表示宝箱的数量和钥匙的数量第二行n个整数,a1,ag.-an, 表示每个宝箱上的数字第三行m个整数,b2,2…b. 表示每个钥匙上的数字每两个数字之间用一个空格分隔
满足1<=n,m<=10^ 5,1<=ai<=10^ 9,1<=bi<=10^ 9
输出描述:
一个整数,表示最多能打开的宝箱的数量

题目代码

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        int[] a=new int[n];
        int[] b=new int[m];
        int aj=0;
        int ao=0;
        for(int i=0;i<n;i++){
            a[i]=sc.nextInt();
            if((a[i]&1)==0)
                ao++;
            else
                aj++;

        }
        int bj=0,bo=0;
        for(int i=0;i<m;i++){
            b[i]=sc.nextInt();
            if((b[i]&1)==0)
                bo++;
            else
                bj++;
        }

        int max=Math.min(bj,ao)+Math.min(aj,bo);
        System.out.println(max);
        sc.close();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章