力扣501 补9.13

501.二叉搜索树中的众数

可以做,还是好想的,有点程序上的细节,哈希表通过遍历实现值找到键,另外就是数组的截取。

不过我做的明显很麻烦,因为花了791ms,卡尔的C++代码也就30ms,离谱哦。

class Solution {

    HashMap map=new HashMap();

    int[] num=new int[10000];

    int number=0,max=0,index=0;

    //哈希的键表示节点序号,值表示节点的值。

    public int[] findMode(TreeNode root) {

        dfs(root);

        for(int i=0;i

            max=Math.max(num[i],max);

        }

                // System.out.println(max);

        int[] ans=new int[number];

        for(int i=0;i

            if(num[i]==max){

                ans[index++]=map.get(i);

            }

        }

        return java.util.Arrays.copyOf(ans,index);

    }

    void dfs(TreeNode node){

        if(node==null) return;

        if(map.containsValue(node.val)==false){

        map.put(number,node.val);

        num[number]++;

        number++;

        }

        else {

            for(int key:map.keySet()){

                if(map.get(key).equals(node.val)){

                    num[key]++;  

                }

            }

 

        }

        dfs(node.left);

        dfs(node.right);

    }

}

你可能感兴趣的:(力扣,数据结构,算法,职场和发展,leetcode,java)