【发布时间】:2014-04-09 14:59:58
【问题描述】:
我正在尝试测试二叉树数组是否完整。我的想法是获取数组并检查数组 [0] 位置和数组最后一个非空值的索引之间是否有任何空值。我的问题是如何找到数组中最后一个非空元素?
【问题讨论】:
我正在尝试测试二叉树数组是否完整。我的想法是获取数组并检查数组 [0] 位置和数组最后一个非空值的索引之间是否有任何空值。我的问题是如何找到数组中最后一个非空元素?
【问题讨论】:
您可以从头开始扫描,记住您找到的最后一个非空的索引。或者从头开始向后工作;第一个非空的索引将比第一个空的索引小 1(除非它们都是空的)。
但既然你关心的只是在非空之前是否有空,向前扫描直到找到空,然后继续;如果你在到达终点之前打了一个非空值,那么你的 BTA 就没有完成。
【讨论】:
试试:
boolean foundNotNull = false; // has a non-null value been found already?
for(int i = array.length - 1 ; i >= 0 ; --i) {
if(array[i] == null && foundNotNull ) {
return true; // yes there are null values
}
if(array[i] != null) {
foundNotNull = true;
}
}
【讨论】:
查找数组的第一个和最后一个非空值的最佳方法。
var first = myArray.filter(function(e, i, a) { return e != undefined;})[0];
var last = myArray.reverse().filter(function(e, i, a) { return e != undefined;})[0];
【讨论】: