Про сортировку уже успели написать, предложу другой более наглядный, но медленный алгоритм.
Давайте составлять ответ итеративно, пусть мы каким то образом получили ответ используя первые i чисел, теперь хотим понять как изменится ответ если будем использовать i + 1 чисел. Для этого достаточно перебрать все возможные позиции вставки i + 1 числа и выбрать ту что дает максимум.
А зачем такая доп проверка? По условиям задачи на leetcode нам гарантируется, что строка состоит только из символом '()[]{}'. Так что достаточно только проверить что скобка открывающаяся, если же провалились ниже в цепочке if то это уже точно закрывающаяся скобка.
Про сортировку уже успели написать, предложу другой более наглядный, но медленный алгоритм.
Давайте составлять ответ итеративно, пусть мы каким то образом получили ответ используя первые i чисел, теперь хотим понять как изменится ответ если будем использовать i + 1 чисел. Для этого достаточно перебрать все возможные позиции вставки i + 1 числа и выбрать ту что дает максимум.
Вот мое решение для задачи https://leetcode.com/problems/largest-number/description/
А зачем такая доп проверка? По условиям задачи на leetcode нам гарантируется, что строка состоит только из символом '()[]{}'. Так что достаточно только проверить что скобка открывающаяся, если же провалились ниже в цепочке if то это уже точно закрывающаяся скобка.
Раз уж тут конкурс на самое короткое решение, вот еще один плюсовый вариант