トピック:
整数の配列を考えると、2つの数のリターン指数は、彼らが特定のターゲットまで追加するように。
あなたは、各入力が持っているであろうと仮定してもよい 、正確に 一つの解決策を、あなたが利用することはできません 同じ 二度の要素を。
例:
所与NUMS = [2、7、11、15]、目標= 9、 ためNUMS [0] + NUMS [1] = 2 + 7 = 9、 リターン[0、1]。
ソリューション:
1 #方法:差分値が激しい溶液避けるために、レコードの値にするためにトラバースキー辞書、対応するインデックスNUMSの値として格納されている 2 クラスソリューション: 3 DEF twoSum(セルフ、NUMS:リスト[ INT]、ターゲット:INT) - > リスト[INT]: 4 _dict = {} 5。 ための I における範囲(LEN(NUMS)) 。6 remainning =ターゲット- NUMS [I] 。7 IF remainning に_dict: 8。 リターン_dict [ remainning]、I 。9 _dict [NUMS [I] = I 10
#方法2:使用して辞書にNUMSを列挙し、共感の方法 クラスのソリューション: DEF twoSum(セルフ、NUMS、ターゲット): "" " :タイプのNUMS:リスト[INT] :int型:タイプのターゲット :RTYPE:リスト[ INT] "" " H = {} のために I、NUM に列挙(NUMS): N- =ターゲット- NUM IF N- ません でH: H [NUM] = I ほか: リターン [H [N-]、I]