算法导论 第三版 习题讨论

时间:2022-05-23 00:11:35

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.

思想:将xS各个整数相减等到新数组A,接下来的任务就是搜索SA中是否有相同元素

解1 nlgn-时间复杂度:

(步骤1)对S排序,采用归并排序(nlgn)或二分法插入排序(nlgn);

(步骤2)采用二分法搜索(lgnS,判断An个元素是否在S中存在。

解2 n-时间复杂度:

利用哈希表:

(步骤1)AS中元素作为键值,对元素遍历,建立哈希表,遍历时,对每个键值对应存储空间加1;

(步骤2)遍历哈希表,如果存在大于1的哈希映射值,则结果为真,反之亦然。