Rotate an array, extract a non-decreasing subsequence
Хора, някой знае ли как мога да реша тези 2 задачи Rotate an array и extract a non-decreasing subsequence от условията за масиви и матрици exercise?
Хора, някой знае ли как мога да реша тези 2 задачи Rotate an array и extract a non-decreasing subsequence от условията за масиви и матрици exercise?
Имаш ли някакво решение, което ти дава някакви точки, или поне нулевите тестове да минават?
Не, нямам. За едната extract .... имам този код ама нищо не бачка и всички тестове са грешни.
function nonDecreesingSubsequence(arr) { let bigger = arr[0] for (let i = 0; i < arr.length; i++) { if (bigger <= arr[i]) bigger = Number(Math.max(arr[i], arr[i + 1])) if (arr[i + 1] >= bigger) { console.log(arr[i]) } } } такава ми е идеята ама нищо не работи
Току що видях, че задачата с въртенето има логическа грешка, така че е логично какъвто и код да имаш да не взимаш 100 точки. С въретено е просто, като изплзваш функцията shift() след изпъление ти връща числото, което е изтило на нулева позиция в масива. След това използваш push() за да го вкараш на последна и това е, само ти трябва един цикъл да въртиш до определения брой превъртания и да не забравиш да махнеш броя на превъртанията от масива.
Драги колеги, аз реших тази задача с extract a non decreasing elements и получих всички правилни output данни според условието. ОБАЧЕ като поставя задачата в judge ми пише, че очаква 1, 2, 8, 10, 12, 24, а аз съм получил само 1, 3, 8 в judge-a, което не е ваоярно, защото аз дефакто получавам правилните резултати, като рънна програмат
За 05. Extract Increasing Subsequence from Array най-вероятно си забравил да сложиш Number() и така 10 е по-малко от 8.
За 04. Rotate Array първото ми решение беше с цикъл, в който n пъти се повтаря Array.unshift(Array.pop()), което работи, но е прекалено бавно за пълен борй точки. 100 точки получих като използвах Array.slice() ф-цията. Ако сложиш отрицателен параментър ще реже от края на масива и можеш да го сложиш отпред с Array.concat().
Това са моито решения на ротациите. 80/100.
Последния тест гърми за време (почти двойно е моето).
function rotation(arr) {
let rotations = Number(arr.splice(arr.length-1, arr.length));
for (let i = 0; i < rotations; i++) {
arr.unshift(arr[arr.length-1]);
arr.pop();
}
console.log(arr.join(' '));
}
Това решение гърми за памет на последния тест:
function rotation(arr) {
let rotations = Number(arr.splice(arr.length-1, arr.length));
for (let i = 0; i < rotations; i++) {
let last = arr.splice(arr.length - 1, arr.length);
arr.unshift(last);
}
console.log(arr.join(' '));
}
Ето едно решения за rotate :
function rotateArray(array) {
let rotations = Number(array[array.length-1]);
array.pop();
let sss = rotations % array.length;
for (let rotation = 1; rotation <= sss; rotation++) {
let lastElement = array[array.length-1];
array.pop();
array.unshift(lastElement); }
console.log(array.join(' '));
}