# Talk:Two sum

## Some ambiguities (inappropriate return type)

What if there is more then one way to get the desired sum? Should it return **all** of the pairs or only **a** pair? Are we to assume the integers in the array are unique? --Thundergnat (talk) 22:21, 4 October 2016 (UTC)

What if there is no solution ? E.g. when all numbers in the list are even, and the desired sum is odd. -- Hajo (talk) 13:53, 5 October 2016 (UTC)

One way of putting it is that the proposed return type (list of integers**[Int]**) is not quite right yet. The structure of the problem would be more clearly expressed by requiring the return of a list of pairs of integers

[(Int, Int)]

i.e. Returning an empty list where no solutions are found, and a list of more than one integer pair where multiple solutions are found.

The English formulation of the task may also need a slight tweak – the phrase "If so, return indices of **the** two integers" skips a bit heavily over the thin ice – it seems to express an assumption that any solution would necessarily be unique. Hout (talk) 07:55, 17 October 2016 (UTC)

## (from the task description) Given a sorted array of positive integers ...

Given that the example list is an ordered list (of positive integers), then why is *zero* included in the array? -- Gerard Schildberger (talk) 03:17, 19 January 2017 (UTC)

Will either the mention of *positive integers* be amended, or will the list of given numbers be changed (hopefully before the draft task gets promoted)?

Since everybody has already used the example list (that contains a non-positive integer, namely zero), it would probably be easier to change it to:

... Given a sorted array of non-negative integers ...

-- Gerard Schildberger (talk) 01:17, 23 September 2017 (UTC)

- I updated the task. The assumption that the integers are positive (or non-negative) is absolutely not necessary. Also, that integers are "single" (unique?) does not guarantee a unique solution, so it's useless. For instance, look for the sum 9 in (1,2,7,8). And to see negative integers don't hurt, just add 1-min(a) to the array 'a', and add twice this number to the target. Actually, one could do the same with non-integers, but it would introduce unnecessary difficulties (floating-point is not exact, hence one can't rely on equality comparison). Eoraptor (talk) 15:15, 4 December 2017 (UTC)

- You're preaching to the choir. However, my objection was that the
*given*of non-negative integers as part of the specification, but zero was included in the case example, a confliction. Now that negative integers are allowed, some programming examples will need to be changed. Also, (for the 2^{nd}REXX programming example), I've added a test case that included negative numbers as well as a duplicate number. -- Gerard Schildberger (talk) 23:01, 4 December 2017 (UTC)

- You're preaching to the choir. However, my objection was that the

- Also, as for the use of non-integers, that isn't a problem for some languages, as not all floating point numbers are necessarily stored in binary, some programming languages can use
*decimal*floating point. Other programming languages can also support scaled numbers, that is,**2.3**can be stored as an decimal integer, with the decimal point indicated to the appropriate location. -- Gerard Schildberger (talk) 23:01, 4 December 2017 (UTC)

- Also, as for the use of non-integers, that isn't a problem for some languages, as not all floating point numbers are necessarily stored in binary, some programming languages can use

## 11 + 11 = 22

In the given example do 11 + 11 constitute a pair of integers? Is [0,2,11,11,90] a valid sorted array?--Nigel Galloway (talk) 16:00, 5 December 2017 (UTC)

- I updated the task to explicitly allow this. It's not a problem, at least with the O(n) algorithm given in the SO source. Eoraptor (talk) 17:47, 5 December 2017 (UTC)