3

ソートされていない正の整数の配列が与えられた場合、3つの連続する数値(昇順または降順)の実行を検索し、そのような実行が開始するインデックスを返す関数を記述します。そのような実行が見つからない場合は、nullを返します。

function findConsecutiveRuns(input:Array):Array

例:[1、2、3、5、10、9、8、9、10、11、7]は[0、4、6、7]を返します

私のJSスキルは少し錆びています、これが私の試みです...

var numArray = [1, 2, 3, 5, 10, 9, 8, 9, 10, 11, 7];
var newNumArray = []; 

for(var i = 1; i < numArray.length; i++) {
    if ((numArray[i] - numArray[i-1] != 1) || (numArray[i] + numArray[i+1] !=1)  {
        return 0;
    }
    else {
    newNumArray.push(numArray[i]);
    }
}
alert(newNumArray);
4

1 に答える 1

5

ここ:

function f ( arr ) {
    var diff1, diff2, result = [];

    for ( var i = 0, len = arr.length; i < len - 2; i += 1 ) {
        diff1 = arr[i] - arr[i+1];
        diff2 = arr[i+1] - arr[i+2];
        if ( Math.abs( diff1 ) === 1 && diff1 === diff2 ) {
            result.push( i );
        }        
    }

    return result.length > 0 ? result : null;
}

ライブデモ: http://jsfiddle.net/Cc4DT/1/

于 2012-05-26T01:16:59.050 に答える