假设我在 Javascript 中有一个整数数组,我想检查它的所有值是否都按升序排列。我想要的是将数组键保存在另一个数组中,以防算法发现一个较低(或相等)的值,不仅比较前一个值,而且比较它之前的任何值。我所做的是这样的:
arr = [], nonvalid = [];
for (var j = 1; j < arr.length; j++){
if ( arr[j+1] <= arr[j] ){
nonvalid.push(j);
}
}
显然,上述算法仅检查与之前的值相比较低的值。
数组可能包含如下值:
arr = 1、2、3、10、5、11、12、2、4、25 _ _ _ _
无效值是粗体值。如果我运行上面的循环,它不会“捕捉”倒数第二个(4),因为它比它最接近的左兄弟高,但不比它所有的左兄弟高。
编辑:
尝试了以下解决方案,除了 mine 之外,没有返回此数组的所有无效值。:(
他们正确地返回了最后两个值,但没有返回第二个值。我不明白为什么。
[24398, 24397, 25004, 25177, 26302, 28036, 29312, 29635, 29829, 30476, 32595, 33732, 34995, 36047, 36363, 37310, 38022, 38882, 40746, 41212, 42846, 43588, 44029, 44595, 44846, 45727, 46041 ,47293,48002,48930,49858,51184,51560,51560,53895,54247,54614,55713,55713,56813,57282,57480 , 65940, 66203, 66572, 67957, 68796, 68964, 69098, 69233, 69435, 69759, 71496, 72577, 72823, 73007, 73252, 73743, 73866, 76405, 77037, 77416, 77669, 79691, 80885, 81339, 81794 , 82067, 82431, 83244, 84861, 86836, 88632, 89877, 90296, 91049, 91885, 92351, 92614, 93141, 93733, 93930, 94531, 95206, 95882, 96895, 97732, 97973, 99261, 99422, 99583, 100332 , 100599, 101666, 102066, 102600, 103504, 104432, 105174, 107216, 109085, 110181, 110679, 111177, 111988, 112553, 75,005, 11406, 600 ]