文章目录
- 一、单选
- 1.
- 2.
- 3.
- 4.
- 5.
- 6. (写错)
- 7. (不会)
- 8. (常错题)
- 9.
- 10. (写错)
- 二、编程
- 1. 组队竞赛
- 题目:
- 题解:
- 代码:
- 2. 删除公共字符
- 题目:
- 题解:
- 代码:
一、单选
1.
正确答案:B
2.
正确答案:D
3.
正确答案:A
4.
正确答案:D
5.
正确答案:B
6. (写错)
正确答案:B
浮点数的默认类型是 double
7. (不会)
正确答案:D
8. (常错题)
正确答案:C
被 private 修饰的成员变量,只能被该类自身所访问和修改
9.
正确答案:C
10. (写错)
正确答案:C
C 选项 不能用类名访问,除非是静态方法(比如D选项)
二、编程
1. 组队竞赛
题目:
原题链接
题解:
队伍的水平值等于该队伍的水平值中和最大的解法
也就是说每个队伍的第二个值尽可能的大
所以我们可以把最大值放到最右边,最小的放在最左边
这个时候,我们使用贪心算法
这里的贪心就是保证每组的第二个值取到能选择的最大值就可以
我们每次尽量去最大,但是大的数不可能是中位数
现在排序后 有 1 2 5 5 8 9 ,那么分组为1 8 9 和 2 5 5
关系 arr[arr.length-2*(i+1)]
代码:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = in.nextInt();
int[] arr = new int[n * 3];
for(int i = 0; i < 3 * n; i++) {
arr[i] = in.nextInt();
}
Arrays.sort(arr);
long sum = 0;
for(int j = 0; j < n; j++) {
sum += arr[arr.length-2*(j+1)];
}
System.out.println(sum);
}
}
}
2. 删除公共字符
题目:
原题链接
题解:
在第一个字符中删除第二个字符串中的内容
这里我们可以借用哈希表来写
将第二个字符串中的字符放到哈希表中
第一个字符串与这个表进行对比
值为空就输入,不为空就说明第二个字符串有值
代码:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String s1 = in.nextLine();
String s2 = in.nextLine();
HashMap<Character,Integer> map = new HashMap<>();
for(int i = 0; i < s2.length(); i++) {
map.put(s2.charAt(i),map.getOrDefault(s2.charAt(i),0) + 1);
}
String ret = "";
for (int i = 0; i < s1.length(); i++) {
if (map.get(s1.charAt(i)) == null) {
ret += s1.charAt(i);
}
}
System.out.println(ret);
}
}
}