Solution: Find Two Numbers That Add Up to n
Explore various approaches to solving the problem of finding two numbers that add up to n in detail.
Solution 1: Brute force
using System;using System.Collections.Generic;class Program{/// <summary>/// Method to find two numbers that add up to n./// </summary>/// <param name="arr">n array of integers.</param>/// <param name="n">The integer number n.</param>public static int[] FindSum(int[] arr, int n){for (int i = 0; i < arr.Length; i++){for (int j = 0; j < arr.Length; j++){if (arr[i] + arr[j] == n && i != j){return new int[] { arr[i], arr[j] };}}}return new int[0];}public static void Main(){Console.WriteLine("[" + string.Join(", ", FindSum(new int[] { 1, 2, 3, 4 }, 5)) + "]");}}
Explanation
This is the most time-intensive but intuitive solution. We traverse the whole list, and for each element in the list, check if any two elements add up to the given number n
.
So, we use a nested for loop and iterate over the entire list for each element.
Time complexity
Since we iterate over the entire list of elements, the time complexity is .
Solution 2: Sorting the list
using System;using System.Collections.Generic;class Program{static int BinarySearch(int[] arr, int item){int first = 0;int last = arr.Length - 1;int found = -1;while (first <= last && found == -1){int mid = (first + last) / 2;if (arr[mid] == item){found = mid;}else{if (item < arr[mid]){last = mid - 1;}else{first = mid + 1;}}}return found;}/// <summary>/// Method to find two numbers that add up to n./// </summary>/// <param name="arr">n array of integers.</param>/// <param name="n">The integer number n.</param>public static int[] FindSum(int[] arr, int n){Array.Sort(arr);for (int i = 0; i < arr.Length; i++){int index = BinarySearch(arr, n - arr[i]);if (index != -1 && index != i){return new int[] { arr[i], arr[index] };}}return new int[0];}public static void Main(){Console.WriteLine("[" + string.Join(", ", FindSum(new int[] { 1, 2, 3, 4 }, 5)) + "]");}}
Explanation
While solution 1 is very intuitive, it is not ...