Nagaraju Chitimilla Ответов: 3

Напишите программу для поиска братьев и сестер данного целочисленного массива


Напишите программу для поиска братьев и сестер данного целочисленного массива. если братья и сестры не найдены, то верните значение -1. input1 относится к длине входных данных. input2-это значения, а input3-это значения, для которых нам нужно найти братьев и сестер.

Пример1:

вход1: 5

вход2: 1,2,3,4,5

input3 не: 1

вывод: {-1}

Пояснение: поскольку 1-это корневой элемент, который не имеет никаких братьев и сестер, поэтому возвращаемое значение равно -1.

Пример 2:

вход1: 6

вход2: 1,2,3,4,5,6

input3 не: 5

выход: {4,6}

Пояснение: {2,3} - это дети 1, а {4,5,6} - дети {2,3}, поэтому выход равен {4,6}

Что я уже пробовал:

public class Exam {

  public static void main(String[] args) throws IOException {
    int input1 = 6;
    int[] input2 = new int[] {1, 2, 3, 4, 5, 6};
    int input3 = 5;
    System.out.println(findSiblings(input1, input2, input3));
  }

  public static int[] findSiblings(int input1, int[] input2, int input3) {
    int[] result = new int[] {-1};
    if (input2[0] == input3) {
      return result;
    }

    
    return result;

  }
}

3 Ответов

Рейтинг:
2

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.

Если вы понятия не имеете, как это сделать, то начните делать это вручную на бумаге и подумайте, как вы это делаете сами.
Затем запишите эти инструкции на своем родном языке и попробуйте слепо следовать им. Если они не работают, уточните их и попробуйте снова. Когда они работают, их довольно легко перевести в реальный код и начать тестирование.


Рейтинг:
2

Pascal Petzoldt

Просто сделай это вот так:
Вы должны сделать небольшую обработку ошибок для несуществующих элементов там:

public static void main(String[] args) throws IOException {

        int[] inputArray = new int[] {1, 2, 3, 4, 5, 6,7};
        int siblingsToFindOf = 6;
        int[] results = findSiblings(inputArray.length, inputArray, siblingsToFindOf);//lenth as array len

        for(int i=0;i<results.length;i++){ //be aware of output arrays item by item. println cant print arrays as well
            System.out.print(String.valueOf(results[i]) + ",");
        }

    }

    public static int[] findSiblings(int input1, int[] input2, int input3) {
        int[] result = new int[] {-1};
        if (input2[0] == input3) {
            return result;
        }

        int siblingFindIndex = -1;
        for(int i=0;i<input2.length;i++){
            if(input2[i]==input3) { //If element at i position is search element
            siblingFindIndex = i;
            break; // end loop
            }
        }
        if(siblingFindIndex>-1){ //index was found in integer array
            result = new int[]{input2[siblingFindIndex-1],input2[siblingFindIndex+1]}; // add found index+1 as upper sibling and found Index -1 as lower sibling
             //to do -> check if both elements exists so there can be no array out of bounds
        }

        return result;

    }


Richard MacCutchan

Вы не помогаете людям, записывая за них домашние задания.

Pascal Petzoldt

Это не очень хорошо работает, когда они не понимают код.

Рейтинг:
0

Member 14976964

public int[] findSibling( int input1, int[] input2, int input3) {
int[] retArr;
if ( 1 == input1) {
retArr = new int[1];
retArr[0] = -1;
retarr возврата;
} еще {
int startPos =0, endPos = 0;
int iLen = вход.длина;
for (int ind=0; ind < iLen; ind++) {
startPos = endPos +1;
endPos += (int)Math.pos(2, ind);
if ( endPos >= input1 || endPos >= input3) {
если ( endPos >= input1) endPos = input1;
перерыв;
}
}
endPos = Math.max( input3, endPos);
int size = endPos - startPos +1;
если ( 1 == размер) {
retArr = new int[1];
retArr[0]=-1
retarr возврата;
}
retArr = new int[размер-1];
for ( int ind=0, indS =0; indS <= endPos; indS++) {
если ( indS == input3) продолжить;
retArr[ind++] = input2[ indS -1];
}
}
retarr возврата;
}


CHill60

Неформатированный, раскомментированный дамп кода - это не очень хорошее решение. Но вы никому не помогаете, делая за кого-то домашнее задание