目录
一、选择题
二、编程题
这两个题都做出来了,属于简单题。
1、小易打怪兽
思路
其实这个题就考一点:求两个数的最大公约数。
1、首先知道两种情况:将小易的能量值与怪兽的能量值比较:如果小易的能量值>=怪兽的能量值,则此时能量值+=怪兽的能量值;
2、如果小易的能量值 <怪兽的能量值:此时的能量值+=(两个的最大公约数)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
// int n = 3;
//定义妖怪的个数
int n = sc.nextInt();
//定义初始能量
// int energy = 50;
int energy = sc.nextInt();
//初始化妖怪的能量
int[] arr = new int[n];
// int[] arr = {50,105,200};
//将用户输入的妖怪能量写入到数组中
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
for (int i = 0; i < arr.length; i++) {
if(energy >= arr[i]){
energy = energy + arr[i];
// System.out.println(energy);
}else{
energy = energy + maxCommon(energy,arr[i]);
// System.out.println(maxCommon(energy,arr[i]));
}
}
System.out.println(energy);
}
}
/**
* 求出两个数字的最大公约数:这里有问题
* @param a
* @param b
* @return
*/
public static int maxCommon(int a,int b){
//先找出两个数中的较小数
int min = Math.min(a,b);
int max = Math.max(a,b);
int common = 1;
int maxCommon = 1;
for (int i = 1; i < min+1; i++) {
//先找出两个数字的所有公约数
if(max % i == 0 && min % i == 0){
common = i;
}
//再找出最大公约数
if(maxCommon < common){
maxCommon = common;
}
}
return maxCommon;
}
2、只出现一次的第一个字符
思路:
1、用map集合来存储:第一个Key值存储string中的每一个字符;第二个参数存储每个字符出现的次数;
2、遍历集合,打印出次数为1的字符;
3、题目要求是第一个出现的次数为1的字符,因此还要做一个判断:一旦找到了第一个次数为1的字符之后,就跳出循环。
public static void main(String[] args) {
// String str = "asaso";
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//用map集合来做:第一个参数用来记录字符,第二个参数用来记录每个字符出现的次数
Map<Character,Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
//如果这个字符是第一次出现,就将次数置为1
if(map.get(str.charAt(i)) == null){
map.put(str.charAt(i),1);
}else{
//如果这个字符之前出现过,现在的次数就是在之前的次数上+1
int count = map.get(str.charAt(i));
map.put(str.charAt(i),count+1);
}
}
boolean flag = false;
char c = 0;
//遍历map集合
for (int i = 0; i < str.length(); i++) {
//获取map中的第二个参数:如果是1表示是该字符只出现了一次
if(map.get(str.charAt(i)) == 1){
//将flag置为true
flag = true;
//此时可能存在多个字符都只出现一次的情况,我们找到第一个符合情况的字符,就跳出for循环
c = str.charAt(i);
//遇见第一个只出现一次的字符,就跳出for循环
break;
}
}
//输出符合条件的结果
if(flag){
System.out.println(c);
}else{
System.out.println(-1);
}
}
要尽快将前面的作业补上,有很多优秀的博客连接,多看看 人家的解题思路~