Если я правильно понимаю, вы используете метод запоминания. Вы создаете таблицу, в которой храните полные результаты для всех уже рассчитанных элементов, поэтому вам не нужно пересчитывать результаты, которые вы уже знаете (вычисленные ранее).
Сам подход не ошибочен, но есть несколько вещей, которые вы должны принять во внимание. Во-первых, вход состоит из списка пар, вы обрабатываете только первую пару. Затем вы должны позаботиться об ограничении вашего стола для запоминания. Вы предполагаете, что все числа, по которым вы попадете, попадают в диапазон [1 ... 1000001), но это не так. Для введенного номера 999999 (первое нечетное число ниже верхнего предела) первая операция превратит его в 3 * n + 1, что намного превышает верхний предел таблицы запоминания.
Некоторые другие вещи, которые вы, возможно, захотите рассмотреть, делят пополам таблицу памятки и запоминают только нечетные числа, так как вы можете реализовать операцию деления на две, почти свободную с помощью битовых операций (и проверка на четность также является только одной битовой операцией) .