Проверьте, есть ли у элемента преемник в массиве java - PullRequest
4 голосов
/ 18 марта 2020

Я пытаюсь проверить, есть ли у элемента массива successor. Другими словами, задайте для восходящего подсписка значение 0, а для остальных - 1. первый элемент inputArray должен игнорироваться

, если да, тогда оба элемента должны быть 0, если нет, то 1. Например: для входа

int[] arr = {1,8,1,9,10};

выход должен быть [1,1,1,0,0]

другой пример: для входа int[] arr = {1,2,3,9,100}; должен быть вывод: [1,0,0,1,1]

Это моя попытка, но она не работает, как ожидалось. Где я делаю неудачник?

public class HelloWorld {
    public static void main(String[] args) {
        int[] arr = { 1, 8, 1, 9, 10 };

        int[] listOutput;
        for (int i = 1; i<arr.length - 1; i++) {
            if (arr[i] - arr[i + 1] == -1) {
                arr[i] = 0;
                arr[i + 1] = 0;
            } else {
                arr[i] = 1;
            }

        }
        System.out.println("Hello World");

        for (int i = 0; i<arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 18 марта 2020
public static void main(String[] args) {
    int[] arr = { 1, 8, 1, 9, 10 };

    // assume arr.length >= 2
    boolean asc = arr[1] - arr[0] == 1;
    for (int i = 1; i < arr.length - 1; i++) {
        if (arr[i + 1] - arr[i] == 1) {
            arr[i] = 0;
            asc = true;
        } else {
            if (asc) {
                asc = false;
                arr[i] = 0;
            }
            else {
                arr[i] = 1;
            }
        }
    }
    arr[arr.length - 1] = asc ? 0 : 1;

    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}

Это заменит каждый восходящий (на 1) подсписок размером больше 1 на 0 с, и заменит каждый оставшийся элемент на 1 (кроме первого элемента, который остается неизменным).

0 голосов
/ 18 марта 2020

Вы зацикливаете массив из 1 вместо 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...