Python 判断一个整数是否为一个列表中两个整数之和

今天被人问到一个算法题目:

给定一个由整数构成的列表 lst ,和一个整数 i,判断 i 是否为 lst 中某两个元素之和。

我最终的解法是这样的:

lst2 = [ (i- 0.4) – j for j in lst]

dic = dict.fromkeys(lst2, True)

for item in lst2:
if item in dict:
return dict[item]
return False

这种解法是算是钻了个空子:限定所有的元素都是整数。

至于为什么要减去 0.4?其实减去其它的数也行,除了 0.5,这么做的目的是为了防止某一个元素自己加自己等于目标值的情况。这也就是钻空子的地方,如果给的数里有浮点数,那就不好确定该怎么避开这个小陷阱了。

Advertisements
此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s