2024年华为OD机试真题-小朋友来自多少小区

华为OD机试真题-小朋友来自多少小区-2024年OD统一考试(D卷)

题目描述:

幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。我们将这些数量汇总到数组garden中。

请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区?

输入描述:

输入:garden[] = {2, 2, 3}

说明:

garden数组长度最大为999

每个小区的小朋友数量最多1000人,也就是garden[i]的范围为[0,999]

输出描述:

输出:7

补充说明:

示例1

输入:

2 2 3

输出:

7

说明:

解释:

第一个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友

第二个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友。

这两个小朋友,可能是同一小区的,且此小区的小朋友只有3个人。

第三个小区反馈还有3个小朋友与自己同一小区,则这些小朋友只能是另外一个小区的。这个小区有4个小朋友。

解题思路:

考察对贪心的理解和运用。 

Java解法:

import java.util.Scanner;
 
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
 
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Map<Integer,Integer> map = new HashMap<>();
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int num = in.nextInt();
            int key = num + 1 ;
            if(map.get(key)!=null){
                map.put(key,map.get(key)+1);
            }else{
                map.put(key,1);
            }
        }
        Set<Integer> set = map.keySet();

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试题库2024年 文章被收录于专栏

2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。

全部评论

相关推荐

5 5 评论
分享
牛客网
牛客企业服务