arr = [1,2,3,4,6,7,8,9]
이제 배열의 값이 연속 있는지 확인하려면
같은 배열을 가지고있다.더 구체적이기 때문에, 나는 연속이며, 다음 요소는 다음 너 한테이 연속 번호가 시작된 곳에서 첫 번째 요소를 반환해야합니다 연속되지 않습니다
먼저 확인 제 1 및 제 2 요소를 제공 할
처럼
arr = [1,2,3,4,6,7,8,9]
이제 배열의 값이 연속 있는지 확인하려면
같은 배열을 가지고있다.더 구체적이기 때문에, 나는 연속이며, 다음 요소는 다음 너 한테이 연속 번호가 시작된 곳에서 첫 번째 요소를 반환해야합니다 연속되지 않습니다
먼저 확인 제 1 및 제 2 요소를 제공 할
처럼
한 (!) 참고가 사전에
First Check will give 1
Second Check will give 6
and so on...
도와주세요 감사합니다 각 호출은 그것이 작동하고있는 배열과 그 배열에 있던 이전의 offset
을 알고 있어야합니다. 당신이 할 수있는 한 가지는 네이티브 Array
객체를 확장하는 것입니다. [Demo]
Array.prototype.nextCons = (function() {
var offset = 0; // remember the last offset
return function() {
var start = offset, len = this.length;
for (var i = start + 1; i < len; i++) {
if (this[i] !== this[i-1] + 1) {
break;
}
}
offset = i;
return this[start];
};
})();
사용
var arr = [1,2,3,4,6,8,9];
arr.nextCons(); // 1
arr.nextCons(); // 6
arr.nextCons(); // 8
그냥 마지막 인덱스를 가져 와서이 코드를 시작할 장소로 반환하지 않으시겠습니까? –
@Paul - 선택적 매개 변수를 사용하는 것이 좋습니다. – galambalazs
나는 그렇게 생각한다. 귀하의 경우, 나는 그것이 결과가 아닌 요소보다 더 많은 시간이 호출되고 배열의 시작 부분으로 재설정하는 방법이 없다면 배열의 길이보다 더 큰 값을 반환한다고 생각합니다. –
의사 코드 :
int count = 0
for i = 0 to array.length - 2
if {array[i + 1] - array[i] = 1 then
count+=1
return i
else count=0}
/**
* Given an array of number, group algebraic sequences with d=1
* [1,2,5,4,8,11,14,13,12] => [[1,2],[4,5],[8],[11,12,13,14]]
*/
import {reduce, last} from 'lodash/fp';
export const groupSequences = (array) => (
reduce((result, value, index, collection) => {
if (value - collection[index - 1] === 1) {
const group = last(result);
group.push(value);
} else {
result.push([value]);
}
return result;
}, [])(array)
);
이 과제인가? 그것은 그것 같이 보인다. 그렇다면 지금까지 시도한 것과 멈춰있는 부분을 보여주십시오. 그렇지 않다면, 당신이 이것을하도록 요구하는 맥락을 설명 할 수 있습니까? –
내가 마지막에 설명했듯이 값을 돌려 줄 알 고를 원한다. – Rohit
@Rohit - 독립 실행 형 번호는 무엇인가? 예를 들어'[1,2,3,4,6,8,9]'는'1, 6, 8' 또는 단지'1, 8'을 반환해야합니까? –