int lastNum = list.get(startIndex);

for(int i = 1; i <= list.size(); i++) {

if(i == list.size() || list.get(i) != lastNum) {

int count = i - startIndex;

if(count > maxCount) {

maxCount = count;

result.clear();

result.add(lastNum);

}else if(count == maxCount){

result.add(lastNum);

}

startIndex = i;

if(i < list.size())

lastNum = list.get(i);

}

}

return result.stream()

.mapToInt(Integer::intValue)

.toArray();

}

private void recurse(TreeNode node, List list) {

if(node == null)

return;

recurse(node.left, list);

list.add(node.val);

recurse(node.right, list);

}

//方法二:无需额外O(n)空间

public int[] findMode2(TreeNode root) {

List result = new ArrayList<>();

Integer[] array = {null, 0, 0};//{lastNum, count, maxCount}

recurse2(root, array, result);

updateCount(array, result);

return result.stream()

.mapToInt(Integer::intValue)

.toArray();

}

private void recurse2(TreeNode node, Integer[] array, List result) {

if(node == null)

return;

recurse2(node.left, array, result);

int current = node.val;

if(array[0] == null) { //初始化

array[0] = current;

array[1] = array[2] = 1;

}else {

if(current != array[0]) {

updateCount(array, result);

array[0] = current;

array[1] = 0;

}

array[1]++;

}

recurse2(node.right, array, result);

}

private void updateCount(Integer[] array, List result) {

if(array[1] > array[2]) {

array[2] = array[1];

result.clear();

result.add(array[0]);

}else if(array[1] == array[2]){

result.add(array[0]);

}

}

}

Test


import static org.junit.Assert.*;

import static com.lun.util.BinaryTree.*;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

image.png

,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-RNsKkc6m-1711760446125)]

最后

[外链图片转存中…(img-NyqBFpX3-1711760446126)]

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐