zoukankan      html  css  js  c++  java
  • Two Sum *

    Given an array of integers, find two numbers such that they add up to a specific target number.
    Input: numbers={2, 7, 11, 15}, target=9
    Output: index1=1, index2=2 (2+7=9)


    这个问题想了很久,一直没想出来,参考了别人的代码才知道可以这样做,没接触过这类问题,要牢记

    最一般的方法是用一个循环套一个循环,时间代价(O(n^2))

    用hash表记住已经查过的数字,这样后面找 target-num[i] 就不用再循环一遍了
    hash表查表代价(O(1)),所以总的时间代价(O(n))

    以下为python代码

    class Solution:
        # @return a tuple, (index1, index2)
        def twoSum(self, num, target):
            dict={}
            for i in range(len(num)):
            	if (target-num[i]) in dict:
            		#dict.get(target-num[i]) #不对???
            		return [dict[target-num[i]]+1,i+1]
            	else:
            		dict[num[i]]=i
    

    使用hash表,来减少查找的时间

  • 相关阅读:
    java实验二
    实验1
    响应式站点设计之使用指南
    掌管一个网站?给你九条忠告
    在本地App上设计Web代码
    订阅
    下载站焦点图
    个性化电影频道js
    展开收起播放列表
    onoff组件
  • 原文地址:https://www.cnblogs.com/iois/p/4295807.html
Copyright © 2011-2022 走看看