CSDN 每日一题 去除整数

尝试好久,没有通过。 不知道问题出在哪里,请高人指点一下。

还觉得现学现用了前几天补习的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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不争之德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值