第一题:组队竞赛
(代码中含详细代码块分析)
import java.util.HashMap;
import java.util.Scanner;
public class DAY1 {
/**
* 组队竞赛
* 贪心算法:每次选值时选当前的局部最优解
* 这题:保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取到最大->即每组第二大
* 关系:arr[arr.length-2*(i+1)]
*/
public static void main(String[] args) {
//从键盘获取输入值
Scanner sc = new Scanner(System.in);
//进行哈希遍历存储每个数组
while(sc.hasNext()){
int n = sc.nextInt();
int[] arr = new int[3*n];
for(int i =0;i < 3*n;i++){
arr[i] = sc.nextInt();
}
//1.排序
Arrays.sort(arr);
//2.找到每组第二大值相加
long sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[arr.length-(2*(i+1))];
}
System.out.println(sum);
}
}
}
2.删除公共字符
/**
* 删除公共字符
*/
//哈希表
public static void main(String[] args) {
// 从键盘获取两个字符串
Scanner scanner = new Scanner(System.in);
String s1 = scanner.nextLine();
String s2 = scanner.nextLine();
//对s2字符串进行哈希存储映射
HashMap<Integer,Character> map = new HashMap<>();
int index =0;
for (int i = 0; i < s2.length(); i++) {
map.put(index,s2.charAt(i));
index ++;
}
//对s1遍历 与s2进行比较 若不包含则输出
for (int i = 0; i < s1.length(); i++) {
if (!map.containsValue(s1.charAt(i))){
System.out.print(s1.charAt(i));
}
}
}