2
$\begingroup$

this is related to the following question:

Generalised 3SUM (k-SUM) problem?

Without loss of generality, let's only consider even $k$, or just $k=4$.

My question is, after summing all pairs of numbers, is it necessary to sort the list of sums? I understand we could use two pointers from left and right to sandwich the two pairs in $O(n^2)$ time, but the sorting requires $O(n^2\log(n))$ time.

If we use a hashmap to store the sums as key and their corresponding index pairs as value, then all operations can run in $O(n^2)$ time.

Am I missing something in that post or is it true for even $k$, $k$-sum can run in $O(n^{k/2})$ time?

Thanks!

$\endgroup$
6
  • $\begingroup$ How would you sandwich with two pointers without sorting? $\endgroup$ Sep 12, 2018 at 19:09
  • $\begingroup$ Let s = $n^2$, then time needed to sort is $O(slogs)$ which is not equal to $O(n^2logn)$. $\endgroup$ Sep 12, 2018 at 19:11
  • $\begingroup$ Hashmap cannot store duplicates. So two pairs having same sum cannot be placed in the hashmap if sum is used as a key. Consider (1,3) and (2,2). $\endgroup$ Sep 12, 2018 at 19:13
  • $\begingroup$ @JotWaraich $O(n^2 \log(n^2))=O(n^2 2\log(n))=O(n^2 \log(n))$ $\endgroup$
    – Kaa1el
    Sep 12, 2018 at 20:11
  • $\begingroup$ @JotWaraich in this case, either you don't need to store the duplicates (decision problem or return one such sum), or you can store in the value a list which consists of all such pairs (return all different sums). Either way, the complexity is not affected. $\endgroup$
    – Kaa1el
    Sep 12, 2018 at 20:13

1 Answer 1

4
$\begingroup$

You are right, but Jeff's answer in the link you provided works in the "linear decision tree model". You cannot use hashing in that model.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.