尝试好久,没有通过。 不知道问题出在哪里,请高人指点一下。
还觉得现学现用了前几天补习的hashMap,沾沾自喜了一会儿,但是结果很让人担心。示例都通不过~~
提示提高写作质量了,好吧,补充一些题目的要求:集合A中有1到n的自然数,给出m个整数,将集合A中 m个整数的倍数都去除,输出集合A最终剩余的元素个数。 题目和我描述的不太一样,我是把我的理解说出来的。说实话,CSDN的题目描述经常让人很难理解,不知道为什么,虽然是汉语,但是比leetcode上的英文题目还难理解,就是觉得有的地方没有说或明白,不知道这些题目是不是机器人编的 。是的话,还需要再好好调试一下~~
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine();
String[] line_list_0 = str_0.trim().split(" ");
ArrayList<Integer> arr_temp = new ArrayList<>();
for(int i = 0; i < line_list_0.length; i++){
arr_temp.add(Integer.parseInt(line_list_0[i]));
}
int n = arr_temp.get(0);
int m = arr_temp.get(1);
String str_2 = scan.nextLine();
String[] line_list_2 = str_2.trim().split(" ");
ArrayList<Integer> arr = new ArrayList<>();
for(int i = 0; i < line_list_2.length; i++){
arr.add(Integer.parseInt(line_list_2[i]));
}
scan.close();
int result = solution(n, m, arr);
System.out.println(result);
}
public static int solution(int n, int m, ArrayList<Integer> arr){
int result = 0;
// TODO: 请在此编写代码
Map<Integer, Integer> nums = new HashMap<>();
Map<Integer, Integer> dels = new HashMap<>();
for( int i = 0; i < m; i ++){
int j = n/arr.get(i);
while( j > 0 ){
nums.put( arr.get(i) ,j );
j --;
}
}
Set<Map.Entry<Integer, Integer>> entries = nums.entrySet();
for(Map.Entry<Integer,Integer> entry : entries){
dels.put( entry.getKey() * entry.getValue(),1);
}
result = n - dels.size();
return result;
}
}