Рассмотрим этот вложенный массив дат и имен:
var fDates = [
['2015-02-03', 'name1'],
['2015-02-04', 'nameg'],
['2015-02-04', 'name5'],
['2015-02-05', 'nameh'],
['1929-03-12', 'name4'],
['2023-07-01', 'name7'],
['2015-02-07', 'name0'],
['2015-02-08', 'nameh'],
['2015-02-15', 'namex'],
['2015-02-09', 'namew'],
['1980-12-23', 'name2'],
['2015-02-12', 'namen'],
['2015-02-13', 'named'],
]
Как я могу определить те даты, которые не соответствуют последовательности. Меня не волнует, повторяются ли даты или пропущены, мне просто нужны не по порядку. То есть, я должен вернуться:
results = [
['1929-03-12', 'name4'],
['2023-07-01', 'name7'],
['2015-02-15', 'namex'],
['1980-12-23', 'name2'],
]
('Namex' менее очевидно, но это не в общем порядке списка.)
Это, по-видимому, является разновидностью проблемы с наибольшим увеличением субпоследовательности (LIS) с предостережением о том, что в последовательности могут повторяться даты, но они никогда не должны отступать назад.
Случай использования. Я отсортировал и устарел записи, и вам нужно найти те, где даты "подозрительны" - возможно, ошибка ввода - для отметки для проверки.
NB1: Я использую прямой Javascript и НЕ структуру. (Я нахожусь в узле, но я ищу решение без пакетов, чтобы я мог понять, что происходит...)