Задан какой-то массив из цифр (JavaScript). Надо проверить,если удалить один элемент из массива,то станет ли массив упорядоченным? (Например - [1,4,2,3] - не упорядоченный,если удалить цифру 4,то тогда станет упорядоченным - [1,2,3]).Если есть такой элемент,удалив который,массив станет упорядоченным,то - return true ,если нет - return false. Надо проверить все варианты массивов,то-есть написать такую программу,который будет работать на всех вариантов массив.(Примеры массивов - [0,0,0,0],[0],[1,1,1],[1],[1,2,3],[2,3,4,5,4],[] и т.д. ) Эта работающая программа,но есть варианты массивов на которых оно не работает...
//JavaScript kod
function solution1(x) {
if(x.length == 0 || x.length == 1) return false;
let p = true;
for(let i=0; i<x.length; i++) {
let y = x.slice();
y.splice(i,1)
p = true;
for(let j= 0; j < y.length; j++){
if (y[j+1] && y[j]>y[j+1]) {
p = false
}
if(j == y.length-1 && p == true){
return true;
}
}
}
return p;
}
console.log(solution1([]))
Как вариант, но пока что мне тоже не нравится немного.
Array.prototype.isAscending = function(){
return this.every( (v,idx) => idx > 0 ? v > this[idx-1] : true );
};
function check(data){
var i =0, asc = false;
do {
asc = data.filter( (v,idx) => idx != i).isAscending();
if(asc) return true;
}
while(++i < data.length)
return false;
}
console.log ( check([4,5,2,3] ) );
console.log ( check([5,2,3] ) );
console.log ( check([2,3] ) );
console.log ( check([2,3,1] ) );
console.log ( check([2,3,1, -1] ) );
так пожалуй лучше будет.
Array.prototype.isAscending = function(){
return this.every( (v,idx) => idx > 0 ? v > this[idx-1] : true );
};
function check(data){
return data.some( (v,i) => data.filter( (f,k) => k != i ).isAscending());
}
console.log ( check([4,5,2,3] ) );
console.log ( check([5,2,3] ) );
console.log ( check([2,3] ) );
console.log ( check([2,3,1] ) );
console.log ( check([2,3,1, -1] ) );
Вроде так. Не очень изящно, но, кажется, работает (во всяком случае, контрпримеров я не придумал):
function solution1(x) {
let anomalyCount = 0;
return !x.some((num, i, arr) => {
if (i > 0 && num < arr[i - 1]) {
return anomalyCount++;
}
if (i > 1 && num < arr[i - 2]) {
return true;
}
return false;
})
}
console.log(solution1([])); // true
console.log(solution1([0])); // true
console.log(solution1([1, 2, 3, 4, 1])); // true
console.log(solution1([0, 0, 0, 0, 0])); // true
console.log(solution1([1, 2, 1, 2, 3])); // true
console.log(solution1([1, 2, 1, 2, 3, 1])); // false
console.log(solution1([1, 2, 3, 1, 2, 3])); // false
Виртуальный выделенный сервер (VDS) становится отличным выбором
Столкнулся с проблемой: при переходе по страницам через клавиши вперёд и назад браузера (Chrome), загружаемая страница распадается на кодТочнее...
Помогите пожалуйстаНужно, чтобы во время клика на кнопку в соседнем div-e выводился name этой кнопки
Есть запрос с подзапросом, который считает количество клиентов за сутки до текущей заявки:
Есть первая таблица она основнаяПоля