【概要】
1.結論
2.どのようにコーディングするのか
1.結論
配列、eachメソッド、if文を使う!
2.どのようにコーディングするのか
defany_three_sum(array)unique_nums=[]#---❶array.eachdo|num|#---❷count=0array.eachdo|i|#---❸ifnum==icount+=1endendifcount<2#---❹unique_nums<<numendendthree_sum=0#---❺unique_nums.eachdo|unique_num| three_sum+=unique_numendputsthree_sumend
まず被らない数字を取り出すプログラムをコーディングしています。例えばany_three_sum([4,3,4])で考えてみます。
❶:重複しない数字を配列に入れ込む箱を用意しています。❺で再度使用します。
❷:num=4,num=3,num=4として、eachで取り出しています。
❸:❷で取り出した数字と❸i=[4,3,4]の数字が一緒の場合はcountが+1になるようにしています。❹に重複した際の重要なコーディングをしています。
❹:count < 2の時はunique_numsに配列に含めるようにしています。count は重複の数字をカウントしているので、num=4の場合は、count=2になるのでunique_sumsに追加しないようになっています。なのでnum=3 が unique_sumsに追加されます。
❺:unique_sums = [3]のみなので、puts three_sum は”3”になります。unique_sumsの値をそれぞれ取り出し(=each)全てを合計(three_sum +=により1回目・2回目の数字も反映する)したものをthree_sum変数に代入しています。