func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
var num1: Int = 0
var num2: Int = 0
for i in nums {
let test1: Int = nums.index(of: i)!
for x in nums {
let test2: Int = nums.index(of: x)!
if (i + x == target && test1 != test2) {
num1 = x
num2 = i
}
}
}
let out1: Int = nums.index(of: num1)!
let out2: Int = nums.index(of: num2)!
let outArray: [Int] = [out1, out2]
return outArray
}
皆さん。上記のコードを実行しようとしています。これはLeetCodeのTwo Sum問題を取り上げたものです。基本的には配列と "ターゲット"を与え、コードは "ターゲット"に等しい数値のインデックスを返します。なぜこのネストループがNULL値を取得するのですか?
twoSum([2,7,11,15], 9)
twoSum([1,5,2,3,5,10], 15)
これまでのところ、これらの2例が正常に動作していると、彼らは正確にそれぞれ[0, 1]
と[1, 5]
を返します。
しかし、この例では、twoSum([3,3], 6)
、予期せずnilエラーが見つかりました。なぜ誰が知っていますか?
ありがとうございます。あなたの代わりにこれを試してみてくださいnums.index(of: num1)
アンラップ強制とき
正しい!私は問題がもともと貧弱な方法で解決されたと思うし、代わりにAleksandrの方法を好むだろう – nomadoda