一、组队竞赛
1、题目链接组队竞赛
https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue=1&page=1&onlyReference=false
2、解题思路
首先把输入的数据放在一个整型数arrry组里面
然后使用Arrays.sort(array)方法把数组按从小到大排序
排序后我们会得到一个有序得数组
然后我们取第一个数据和倒数后两个数据组成一队,这样就保证了整个数组里面第二大的数据会被选中
最后依次按照上面进行分组 ,就可以得出一个公式:array[array.length-(2*(i+1))],i小于队伍的个数及小于n
举个例子:1,2,5,5,5,8
6个数据按照题意可以分为2组,按照上述思路则可以分为1,5,8一组,2,5,5一组
因此0<=i<2,再按照上面的公式可以得到数据5和5,也就是每一个队伍中第二大得数据,再将得到的数据相加后输出
3、代码详情
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()){
int n=scanner.nextInt();
int[] array = new int[3*n];
for (int i = 0; i <3*n ; i++) {
array[i] =scanner.nextInt();
}
long sum=0;
Arrays.sort(array);
for (int i = 0; i <n ; i++) {
sum=sum+array[array.length-(2*(i+1))];
}
System.out.println(sum);
}
}
}
二、 删除公共字符
1、题目链接
2、解题思路
输入两个字符串str1,str2,实例化一个HashMap
遍历字符str2,把每个字母出现得次数存放在hashmap中,如果该字母没有出现过测默认为null
遍历字符串str1,把字符串str1中出现得每个字母与hasmap中该字母出现的次数进行对比如果出现得次数是null则打印
3、代码详情
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String str1=scanner.nextLine();
String str2=scanner.nextLine();
HashMap<Character,Integer> hashMap=new HashMap<>();
for (int i = 0; i <str2.length() ; i++) {
if (hashMap.get(str2.charAt(i))==null){
hashMap.put(str2.charAt(i),1);
}else {
hashMap.put(str2.charAt(i),hashMap.get(str2.charAt(i))+1);
}
}
String ret="";
for (int i = 0; i <str1.length() ; i++) {
if (hashMap.get(str1.charAt(i))==null){
ret=ret+str1.charAt(i);
}
}
System.out.println(ret);
}
}
本文含有隐藏内容,请 开通VIP 后查看