Я думаю, что ваша путаница связана с тем, как вы обрабатываете элементы в списке, равные x
, номеру сводки.Ключевым моментом, на который следует обратить внимание, является эта часть инструкций:
все узлы, меньшие x, идут перед узлами, большими или равными x
Вы просто должныразделите список на две части: «меньше чем x
» и «больше или равно x
».Любые значения, равные x
, относятся ко второй категории и не обрабатываются иначе, чем любые другие.
Похоже, вы инстинктивно хотели создать трехстороннее разбиение, где значения, равные x
, не включены ни в одну из двух основных частей списка.Вместо этого все значения, равные x
, застряли бы посередине между значениями «меньше x
» и «больше чем x
».
Трехстороннее разбиениечасто более эффективный, чем двусторонний раздел, но это не то, о чем просит ваша проблема.Вот почему вам говорят, что вы даете неправильный ответ на некоторые из входных данных.
Обратите внимание, что это не имеет никакого смысла для второго примера, который вы дали.Двухсторонний стабильный раздел 3->5->8->5->10->2->1
для сводного значения 5
должен давать: 3->2->1->5->8->5->10
, а не вывод, который вы описываете, что переупорядочивает обе стороны списка без видимой причины.