Introduction to Algorithms 3rd Edition
2.3-7
Describe a nlgn-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements inS whose sum is
exactly x.
思想:将x与S各个整数相减等到新数组A,接下来的任务就是搜索S和A中是否有相同元素
解1 nlgn-时间复杂度:
(步骤1)对S排序,采用归并排序(nlgn)或二分法插入排序(nlgn);
(步骤2)采用二分法搜索(lgn)S,判断A的n个元素是否在S中存在。
解2 n-时间复杂度:
利用哈希表:
(步骤1)A和S中元素作为键值,对元素遍历,建立哈希表,遍历时,对每个键值对应存储空间加1;
(步骤2)遍历哈希表,如果存在大于1的哈希映射值,则结果为真,反之亦然。