Loading...
office_kanev avatar office_kanev 6 Точки

[Homework] Java Collections март 2016

Здравейте колеги качвам моето домашно тук  цък .Приемам всякакви съвети за оптимизация и критики.Извинявам се че не мога да ви отговарям на коментарите които ми пишете но да работиш и учиш е много кофти.

3
Java Advanced 28/03/2016 13:40:26
a_angelov_angelov avatar a_angelov_angelov 2 Точки

Implement Recursive Binary Search

Още на пръв поглед можем да видим, че output на четвъртия input е грешен.

Тук е моята логика - http://pastebin.com/YwdjKSGr

Вие как мислите?

0
IskrenPenev avatar IskrenPenev 177 Точки

Донякъде си прав - в самото условие никъде не се казва че трябва да се посочи най-малкия индекс на който даденото се намира, а само да се посочи на коя позици се намира, независимо дали числото се среща повече от 1 път.

0
EyubDjelil avatar EyubDjelil 9 Точки

Здравей office_kanev тъкмо разгледах решението на 2ра задача. Установих, че не работи коректно. Може по чиста случайност да дава верни отговори на примерните тестове.

Аз пробвах с вход:  hi yes yes bye yes bye hi

Output: 

hi 
yes yes 
bye 
yes 
bye 
h

Грешката идва от това, че проверяваш само дали 2 съседни елемента са еднакви. Надявам се, че съм бил полезен.

0
IskrenPenev avatar IskrenPenev 177 Точки

С този вход, това което си получил е очакваният изход.  Входът който даваш има само 1 поредица от еднакви стрингове 

hi yes yes bye yes bye hi. Самата идея е да се провери дали настоящият елемент е еднакъв с предния, ако е еднакъв го отпечатва и добавя празно място, ако не е еднакъв слага нов ред и тогава го отпечатва .

0
EyubDjelil avatar EyubDjelil 9 Точки

Мале ужас. До сега си блъсках главата за да изкарвам всички срещания на всеки елемент от масива.Все пак успях, но било безполезно :). Така е като не чета внимателно условието. Мерси за пояснението.

В такъв случай за да не е капо колегата office_kanev с моят явен грешен коментар нека го посъветвам правилно.

Колега вместо да правиш излишни според мен маневри ето един по-добър според мен вариант на твоята задача.

Твоя вариант:

String prev = "";
String curr = "";
for (int i = 0; i < arr.length; i++) {
    if (i == 0) {
        System.out.print(arr[i] + " ");
        continue;
    }
    prev = arr[i - 1];
    curr = arr[i];
    if (curr.contains(prev)) {
        System.out.print(curr + " ");
    } else {
        System.out.println();
        System.out.print(curr + " ");
    }
}

 

Подобрен вариант: 

Scanner scan = new Scanner(System.in);
String[] arr = scan.nextLine().split(" ");
scan.close();
for (int i = 0; i < arr.length-1; i++) {
    if (arr[i].equals(arr[i+1])){
        System.out.print(arr[i].concat(" "));
    }else{
        System.out.print(arr[i]);
        System.out.println();
    }
}

По този начин спестяваме памет и време (което не е критично за задачата).

Също така използвам concat(" ") вместо arr[i] + " " което е по бавна операция според лектора ми от Basics нивото.

Между другото това scan.close(); ме озадачи в първия момент, тъй като аз лично никога не го затварям.Но ми беше полезно да го видя и предполагам вече ще го затварям и аз.

0
04/04/2016 22:55:21
Kuasiyves avatar Kuasiyves 3 Точки
ето една кратка за 2 задачи



import java.util.Scanner;

public class SequencesofEqualStrings {
    public static void main(String[] args) {

        Scanner scanner =new Scanner(System.in);
        String[] array =scanner.nextLine().split(" ");

        for(int i = 0;i < array.length - 1;i++){
            if(array[i].equals(array[i+1])){
                System.out.print(array[i] + " ");
            }else{
                System.out.println(array[i]);
            }
        }
        if(array[array.length-2].equals(array[array.length-1])){
            System.out.print(array[array.length-1]);
        }else{
            System.out.println(array[array.length-1]);
        }
    }
}
0
EyubDjelil avatar EyubDjelil 9 Точки

Това за какво ти е?

if(array[array.length-2].equals(array[array.length-1])){
   System.out.print(array[array.length-1]);
}else{
   System.out.println(array[array.length-1]);
}

На последния пример на 2-ра задача мята Exeption заради този код.

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