Java Codingbat notAlone - почему он не работает для этого конкретного примера

особенность:

Мы будем говорить, что элемент в массиве «в одиночку», если есть значения до и после него, и эти значения отличаются от него. Возвращает версию данного массива, где каждый экземпляр данного значения, которое в одиночку заменяется какой бы ни значение его влево или вправо, больше.

notAlone ([1, 2, 3], 2) → [1, 3, 3]

notAlone ([1, 2, 3, 2, 5, 2], 2) → [1, 3, 3, 5, 5, 2]

notAlone ([3, 4], 3) → [3, 4]

public int[] notAlone(int[] nums, int val) {
  for(int k = 1 ; k<nums.length; k++)
  {
    if(k!= nums.length-1)
    {
      int max = nums[k];
      if(nums[k-1]>nums[k])
        max = nums[k-1];
      else if(nums[k+1] > nums[k])
        max = nums[k+1];
      if(nums[k-1] != nums[k] && nums[k] != nums[k+1])
        nums[k] = max;
    }
  }
  return nums;
}

Когда я побежал это на codingbat, он работал на всех примерах, за исключением этого: notAlone ([1, 2, 3, 2, 5, 2], 2) должен возвращать [1, 3, 3, 5, 5, 2], но вместо шахты вернулись [1, 3, 3, 3, 5, 2].

Я действительно застрял на том, как решить эту проблему, потому что в моем уме, что я написал, должен работать на этом конкретном примере, как хорошо, но, видимо, это не так. Где моя ошибка взялась? Как я должен переписать мой код? Любая помощь будет очень признателен!

Они были:

Вы более усложняя его. Вам нужно только найти maxиз предыдущих и последующих элементов , если текущий элемент должен быть заменен:

public static int[] notAlone(int[] nums, int val) {
    for(int k = 1 ; k<nums.length - 1; k++)
    {
        if(nums[k]==val && nums[k-1] != nums[k] && nums[k] != nums[k+1])
            nums[k] = Math.max (nums[k-1], nums[k+1]);
    }
    return nums;
}

Кстати, в своем решении вы проигнорируете данное значение ( val):

Возвращает версию данного массива , где каждый экземпляр данного значения заменяется , который в одиночку ...

Это не причина, почему ваш код не удалось в данном случае, хотя. Вы просто не нашли правильный максимум:

Когда k==3:

int max = nums[k]; // max = 2
if(nums[k-1]>nums[k]) // 3 > 2
    max = nums[k-1]; // max = 3
else if(nums[k+1] > nums[k]) // no evaluated. therefore you change num[3] to 3 instead of to 5
    max = nums[k+1];

Если вы заменили эти 5 строк с:

int max = nums[k-1];
if(nums[k+1] > max)
    max = nums[k+1];

вы получили бы правильный выход.

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Codingbat チャレンジ: notAlone ストリーム API ソリューション

рекурсивное упражнение по codingbat

Рекурсия codingbat

Codingbat strDist: упражнение на рекурсию

CodingBat sameEnds работает со строками

twoTwo загадка от CodingBat

Практический вопрос CodingBat - строки Python

проблема вычитания рекурсии от CodingBat.com

Есть ли более простое решение для Codingbat fix45?

codingbat Проблема: close_far | провалив только один тест | пятка

Défi Codingbat : maxBlock

Я не понимаю, почему этот код работает (Codingbat Array2 tenRun)

Array-2 zeromax codingbat

Проблема CodingBat string_bits решена с помощью цикла Swit for

Есть ли более простой способ сделать string_match из CodingBat в Python?

CodingBat-Excercise: возвращает истину, если данный массив содержит несчастливую 1 в первых 2 или последних 2 позициях в массиве.

CodingBat AP-1,任务号。4?

Как распечатать результат из функции (мое расширение вопроса Codingbat: Warmup-1> near_hundred)

Есть ли более простой способ сделать rotate_left3 на CodingBat Python?

Codingbat challenge: mirrorEnds Stream API Solution

Я получаю сообщение об ошибке Time Out, когда отправляю свой код на CodingBat Python (https://codingbat.com/prob/p118406)

list index out of range - CodingBat Problem - Has22

CodingBat split53; Confused about the right way to use returns

CodingBat Python make_chocolate code failing in "other tests"

Défi Codingbat : solution d'API zeroFront Stream

Défi Codingbat : solution d'API de flux sumNumbers

Défi Codingbat : mirrorEnds utilisant l'API Stream

Défi Codingbat : solution d'API de flux zeroMax

Défi Codingbat : solution d'API de flux sameEnds

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Merging legends in plotly subplot

  3. 3

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  4. 4

    Проблема с window.print в Safari

  5. 5

    Перебирайте несколько столбцов в фрейме данных Panda и находите уникальные значения подсчета

  6. 6

    JetBrains Rider enable-migrations для ASP.NET MVC на Mac

  7. 7

    migrate MongoDB container service - mongodump command not found

  8. 8

    Как создать переменную с использованием класса Color, который включает только выбранные цвета?

  9. 9

    Ошибка XDG0062: не удалось установить «Контент». в режиме навигации MUXC

  10. 10

    Как загрузить ZIP-файл в Nexus с помощью Maven и избежать создания артефакта pom в Nexus?

  11. 11

    QString удалить последние символы

  12. 12

    Symfony 4, Postgres - `Неверное значение параметра client_encoding:« utf8mb4 »` при выполнении команды doctrine

  13. 13

    HTML Body говорит cz-shortcut-listen = "true" с инструментами разработчика Chrome?

  14. 14

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  15. 15

    Как создать простую анимацию в Xamarin с помощью SkiaSharp

  16. 16

    Установка pip с использованием Python 2.7, установленного в ArcGIS

  17. 17

    Qt - не растягивать виджеты в QVBoxLayout

  18. 18

    How to convert C++/CLI string to const char*

  19. 19

    sbt: Как разрешить зависимости Maven, использующие свойства Maven

  20. 20

    Flutter: Unhandled Exception: FileSystemException: Creation failed, path = 'Directory: '' (OS Error: Read-only file system, errno = 30)

  21. 21

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

популярныйтег

файл