与えられた配列の2つの要素と与えられた目標値にちょうど等しい最小の下付きスケールを探し出し,時間複雑度はO(n)を要求する.


タイトルの要件:
与えられた配列の2つの要素と与えられた目標値にちょうど等しい最小の下付きスケールを探し出し,時間複雑度はO(n)を要求する.
例:
入力配列[5,4,6,7,8,11]、目盛り値19
は、4、5を返します.
 
すべてのコードはGithubで見つけることができます.
リンクのダウンロード
 
# -*- coding:utf-8 -*-
__author__ = 'yangxin_ryan'
"""
Question:
        ,      ,                          ;
         O(n);

Solutions:
   :       Hash   ,             Hash     Hash  ( )。
       key   ,Value      ;
   :             list_num,   ,(target -     )        Hash  ;
        hash value  -1,   break   ,           ;

                O(n);
"""


class SumNumber(object):

    def sum_number(self, list_num, target):
        result = list()
        hash_list = [-1] * (max(max(list_num), target) + 1)
        for i in range(len(list_num)):
            if hash_list[list_num[i]] == -1:
                hash_list[list_num[i]] = i
            elif hash_list[list_num[i]] > i:
                hash_list[list_num