Two sum
Two sum is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
- Task
Given a sorted array of single positive integers, is it possible to find a pair of integers from that array that sum up to a given sum? If so, return indices of the two integers or an empty array if not.
- Example
Given numbers = [0, 2, 11, 19, 90], sum = 21,
Because numbers[1] + numbers[3] = 2 + 19 = 21,
return [0, 3].
- Source
Stack Overflow: Find pair of numbers in array that add to given sum
C#
<lang csharp>public static int[] TwoSum(int[] numbers, int sum) {
var map = new Dictionary<int, int>(); for (var i = 0; i < numbers.Length; i++) { var key = sum - numbers[i]; if (map.ContainsKey(key)) return new[] { map[key], i }; map.Add(numbers[i], i); } return Array.Empty<int>();
}</lang>
- Output:
[0,3]
ooRexx
<lang oorexx>a=.array~of(0, 2, 11, 19, 90) x=21 do i=1 To a~items
If a[i]>x Then Leave Do j=i+1 To a~items s=a[i] s+=a[j] Select When s=x Then Leave i When s>x Then Leave j Otherwise Nop End End End
If s=x Then Do
i-=1 /* array a's index sarts with 1, so adjust */ j-=1 Say '['i','j']' End
Else
Say '[] - no items found'</lang>
- Output:
[1,3]