-2
Я пытался решить this небольшую проблему с LeetCode:Начало Индекс массива/элемент списка
-module(two_sum).
-export([main/2]).
-spec main(List :: list(), Target :: non_neg_integer()) -> list().
%%%==================================================================
%%% Export
%%%==================================================================
main(List, Target) ->
P = [{string:str(List, [X]), string:str(List, [Y]), X + Y} || X <- List, Y <- List, Y > X andalso X + Y =:= Target],
io:format("Result: ~w~n", [P]).
%%[X + Y || X <- List, Y <- List, Y > X].
%%iterate(List, Target, 0, {}).
%%%==================================================================
%%% Internal
%%%==================================================================
iterate([], _Target, _Sum, _Result) -> {};
iterate([H | T], Target, Sum, Result) ->
%%io:format("H >> ~w; T >> ~w, Target >> ~w~n", [H, T, Target]).
Acc = Sum + H,
case Acc =:= Target of
true -> erlang:append_element(Result, H);
false -> iterate(T, Target, Acc, Result)
end.
Мои вопросы:
- Есть ли более эффективный способ, чтобы получить индекс элемента из массив/список? В настоящее время я использую это:
{string:str(List, [X])
, но я не уверен, что это правильно, хотя он выполняет свою работу. - Если мне случится, например, получить такой результат:
R = [{1,2,9},{1,3,13},{1,4,17},{2,3,18},{2,4,22},{3,4,26}]
, как мне сопоставить шаблон для{1,2,9}
, зная, что9
-Target
? Я пробовал[{X1, X2, Target}] = R
... но ему это не понравилось!
Если вы охарактеризовали «постановка задачи» в этом вопросе, и объяснить свой алгоритм на языке агностиком псевдокоде, то есть лучший шанс для вас, чтобы получить ответ (предполагая, что ваш вопрос касается алгоритма, а не конкретной функции языка). –
У меня нет вопросов. Более эффективный путь от чего? И, кстати, я считаю, что ваш алгоритм работает неправильно. –