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);
}
}