Loading...
DenitsaPambelova avatar DenitsaPambelova 3 Точки

JS Essentials Exam 6 august 2019 Find the Special Subsequence

Здравейте,колеги!

Някой може ли да сподели решение на 2 задача от този изпит. Ето условието:

Problem 2. Find the Special Subsequence
Your task is to find the longest special subsequence in the given array.
The special subsequence is a sequence, which contains negative-positive-negative or positive-negative-positive numbers in that order. If there are 2 special sequences with equal length get the first one.
Input
An array - contains  the given numbers from the sequence.
Output
If there is no special subsequence print: "In {sequence} no special sequence is found"
Otherwise show each of the elements in that sequence separated with comma and single space (", ")
"The longest sequence is {sequence}"
Note: 
0 (zero) is neither positive nor negative number, so it always breaks the sequence
Examples
Input                                     Output                                         Comment
[1, -2, 1, -1, 2, 1, -1]    The longest sequence is 1, -2, 1, -1, 2    There are 2 special subsequences. The first contains 5 numbers, the second containes 2 numbers, so we print the length of the first one.
[-1, -1, -1, 1, -1]    The longest sequence is -1, 1, -1    
[1, 2, 3, 4, 5]    In 1, 2, 3, 4, 5 no special sequence is found    
 

Тагове:
0
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки
Best Answer

Пробвай това, за съжаление джъдж още не отворен за тест:

function solve(arr) {
    let longestSubsequence = [];
    for (let i = 0; i < arr.length - 1; i++) {
        let currentSubsequence = [];
        currentSubsequence.push(arr[i]);
        currentIndex = i;
        while (true) {
            currentIndex++;
            if ((arr[currentIndex - 1] > 0 && arr[currentIndex] < 0) || (arr[currentIndex - 1] < 0 && arr[currentIndex] > 0)) {
                currentSubsequence.push(arr[currentIndex]);
            } else {
                i = currentIndex;
                break;
            }
        }
        if (currentSubsequence.length > longestSubsequence.length) {
            longestSubsequence = currentSubsequence.slice();
        }
    }
    if (longestSubsequence.length >= 3) {
        console.log(`The longest sequence is ${longestSubsequence.join(', ')}`);
    } else {
        console.log(`In ${arr.join(', ')} no special sequence is found`);
    }
}

solve([1, -2, 1, -1, 2, 1, -1]);
solve([-1, -1, -1, 1, -1]);
solve([1, 2, 3, 4, 5]);

 

0
Todorov_Stanimir avatar Todorov_Stanimir 1 Точки

Заповядайте, моето решение https://pastebin.com/crCQGzaK.

Тествано е в judge и дава максималния брой точки.

0
29/08/2019 19:21:43
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

e какво толкова, 1 for цикъл от ляво надясно и проверяваш ако отговая на условието увеличаваш count-a ако запомняш колко е дълга и кой е индекса и продължаваш отново от 0. с 1 цикъл и 2 променливи за начало и дължина ще се реши.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.