假设我有一个 Javascript 整数数组,我想检查它的所有值是否都按升序排列。我想要的是将数组键保存在另一个数组中,以防算法发现一个较低(或等于)的值,不仅比较前一个值,而且还比较它之前的任何值。
我所做的是这样的:
arr = [], nonvalid = [];
for (var j = 1; j < arr.length; j++){
if ( arr[j+1] <= arr[j] ){
nonvalid.push(j);
}
}
显然,上述算法仅检查与之前的值相比较低的值。
数组可能包含如下值:
ar = 1, 2, 3, 10,5, 11, 12,2, 4, 25
无效值是粗体值。如果我运行上面的循环,它不会“捕获”倒数第二个(4),因为它高于它的最左边的兄弟,但并不比全部高左兄弟.
EDIT:
尝试了以下解决方案,除了我的之外,没有一个解决方案返回该数组的所有无效值。 :(
他们正确返回了最后两个值,但没有返回第二个值。
我不明白为什么。
[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、 53895、 54247、 54614、 55713、 56813、 57282、 57480、 57875、 58073、 58403、 60321、 61469、62051、62310、62634、63217、64505、65413、65677 、 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、 113005、 113457,600, 600]