欢迎来到算法入门到王者之路专栏,一起学习,一起进步
前言
大家好,我是全世界最强男人-白胡子。从今天开始我打算立一个flag。就是连续刷题48天。每天最少两道编程题。外加选择题不等。还望大家监督!!!。如果到时候一起刷题的人多的话,我会建一个算法交流群。主要还是看大家的想法啦。
一、选择题
:在Java中,存放字符串常量的对象属于()类对象。
ACharactrBStringCStringBuffrDVctor
解析:先不给大家说答案,大家先自己想一下自己心中的答案是什么。选B。存放字符串常量的对象都属于String类对象。
:关于下列程序段的输出结果,说法正确的是:()publicclassMyClass{staticinti;publicstaticvoidmain(Stringargs[]){Systm.out.println(i);}}A有错误,变量i没有初始化。BnullCD0
解析:如果没有初始化静态变量的话,结果就会是0.这个结论大家记住就好了。我再给大家运行一下程序。选D
3:下列代码的执行结果是:()publicclassTst3{publicstaticvoidmain(Stringargs[]){Systm.out.println(00%3);Systm.out.println(00%3.0);}}
A和B和.0C.0和D.0和.0
解析:这个很好理解,整数取余整数结果也是整数。对浮点型取余结果就是浮点数。就算忘了的话,记住就好啦。选B
4:在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?()AintfloatBintdoublClongfloatDlongdoubl
解析:同上一道题,记住就好了。如果你忘了的话。选B
5:方法通常存储在进程中的哪一区()
A堆区B栈区C全局区D方法区解析:方法当然在发放区啦。就像你的女朋友难道我拉她的手吗,道理一样的。选D
6:不考虑反射,关于私有访问控制符privat修饰的成员变量,以下说法正确的是()A可以三种类所引用:该类自身、与它在同一包中的其他类,在其他包中的该类的子类B可以被两种类访问和引用:该类本身、该类的所有子类C只能被该类自身所访问和修改D只能被同一个包中的类访问
解析:给大家一张图,直接看明白访问权限。从public开始逐次减小,知道privat私有的,只能给自己的类使用。选C
7:Math.round(.5)等于多少().Math.round(-.5)等于多少().A,-B,-C,-D,-
解析:这是数学函数,这道题想考这个方法是向上取整还是向下取整。对于正数来说是向上取整。对于负数来说就是向下取整。选C
8:假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?()publicclassA{publicinti;staticStrings;voidmthod(){}staticvoidmthod(){}}ASystm.out.println(a.i);Ba.mthod();CA.mthod();DA.mthod();
解析:通过一个实例对象来访问类的成员变量是可以的。通过实例变量调用方法也是可以的。但是通过类名去调用非静态方法是不可行的。当我想要这样做的时候编辑器就会警告。不是非静态的方法不能被一个静态的上下文调用。但是D就是可行的,因为mthod()是静态方法。选C
二、编程题
.组队竞赛
题目链接:组队竞赛
牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是,5,.那么队伍的水平值是为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例所示:如果牛牛把6个队员划分到两个队伍如果方案为:tam:{,,5},tam:{5,5,8},这时候水平值总和为7.而如果方案为:tam:{,5,8},tam:{,5,5},这时候水平值总和为0.没有比总和为0更大的方案,所以输出0.
输入描述:输入的第一行为一个正整数n(≤n≤0^5)
第二行包括3*n个整数a_i(≤a_i≤0^9),表示每个参赛选手的水平值.
输出描述:输出一个整数表示所有队伍的水平值总和最大值.
示例输入输出0
解题思路:要想让队伍的水平总和最大值.最大。不妨先将数组排序试试看。我们就举上面的例子,,5,5,5,8。我们要保证的就是每组第二大的数最大即可。最后求和也是这个数累加和。第二大数的关系公式arr[arr.lngth-*(i+)]。
代码实现:
classMain{publicstaticvoidmain(String[]args){Scannrscanr=nwScannr(Systm.in);intn=scanr.nxtInt();intarr[]=nwint[n*3];for(inti=0;i3*n;i++){arr=scanr.nxtInt();}Arrays.sort(arr);longsum=0;for(inti=0;in;i++){sum+=arr[arr.lngth-*(i+)];}Systm.out.print(sum);}
.删除公共字符
题目链接:删除公共字符
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”Thyastudnts.”和”aiou”,则删除之后的第一个字符串变成”Thyrstdnts.”输入描述:每个测试输入包含个字符串输出描述:输出删除后的字符串示例输入:Thyastudnts.aiou
输出:Thyrstdnts.
解题思路:这道题很简单,我们用哈希表遍历aiou。并存入。再使用一个字符串t遍历Thyastudnts.如果表中没有Thyastudnts.的字符就添加进去。最后打印t即可。
importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannrscannr=nwScannr(Systm.in);Stringstr=scannr.nxtLin();Stringstr=scannr.nxtLin();HashMapCharactr,IntgrhashMap=nwHashMap();for(inti=0;istr.lngth();i++){if(hashMap.gt(str.charAt(i))==null){//如果没有就放到表里面hashMap.put(str.charAt(i),);}ls{//已经存在就计数+hashMap.put(str.charAt(i),hashMap.gt(str.charAt(i))+);}}Stringt="";for(inti=0;istr.lngth();i++){if(hashMap.gt(str.charAt(i))==null){t+=str.charAt(i);}}Systm.out.println(t);}}
,