题解 | #牛群共有的编号#

牛群共有的编号

https://www.nowcoder.com/practice/a188da7b9c3a408b98b1cf47632f59d0?tpId=363&tqId=10609084&ru=/exam/oj&qru=/ta/super-company23Year/question-ranking&sourceUrl=%2Fexam%2Foj

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型二维数组
     * @return int整型一维数组
     */
    public int[] common_cow_numbers (int[][] nums) {
        // 创建hashMap存储数值以及出现的次数
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        for (int[] num : nums) {
            for (int i = 0; i < num.length; i++) {
                hashMap.put(num[i],hashMap.getOrDefault(num[i],0)+1);
            }
        }
        ArrayList<Integer> arrayList = new ArrayList<>();
        Set<Map.Entry<Integer, Integer>> entries = hashMap.entrySet();
        for (Map.Entry<Integer, Integer> entry : entries) {
            Integer value = entry.getValue();
            if(value==nums.length){
                arrayList.add(entry.getKey());
            }
        }
        Collections.sort(arrayList);
        int [] result = new int [arrayList.size()];
        for (int i = 0; i < arrayList.size(); i++) {
            result[i] = arrayList.get(i);
        }
        return result;
    }
}

本题知识点分析:

1.哈希表

2.API函数(Collections.sort)

3.有序集合存取

4.集合转数组

5.数学模拟

本题解题思路分析:

1.一开始我把nums.length做成3,不是通用的解法

2.所以要注意nums.length可以是任意长度,多个数组

3.将单个数组中的每个元素,添加到hashMap中,并记录出现的数值和出现的次数。

4.遍历hashMap,从entry中取出value,如果当前value等于nums.length,比如3个数组,那么value为3

5.将符合条件的value,取key,添加到arrayList集合中,利用Collections.sort升序

6.集合转数组进行返回

本题使用编程语言: Java

全部评论

相关推荐

05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务