-2
我試圖解決this從本文給出了一點問題:入門數組/列表元素索引
-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
......但它不喜歡它!
如果您所描述的「問題說明」中的問題,並在語言無關的僞代碼解釋你的算法,然後有一個更好的機會,你要得到迴應(假設你的問題是關於算法而不是特定的語言特性)。 –
我不明白你的問題。更有效的方式是什麼?順便說一句,我認爲你的算法實際上並沒有正常工作。 –