An OOP Approach to Solving the Famous Two Sum Algorithmic Problem

How to Solve the Two Sum Problem using an Object Oriented Programming Approach?

Abdallah Yashir
2 min readMar 20, 2023

Problem Statement

Here’s the description of the Two Sum problem:

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

Example

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

My Solution

The trick part is here to return the indices. Therefore, you want a way to keep this data throughout the problem.

Thinking in terms of data structures, I use List as it’s mutable. As a result, I don’t need to keep track of which element we are currently looping.

I build the Class structure based on the final output I want.

Bonus: I also override the ToString method, which greatly helps to debug.

public class Solution {
public int[] TwoSum(int[] nums, int target) {
var item = new Item();
var list = nums.ToList();
item.firstValue = list.First();
item.firstIndex = 0;
list.RemoveAt(0);

var counter = 0;
while (list.Any())
{
if (item.firstValue + list.FirstOrDefault() == target)
{
item.secondValue = list.FirstOrDefault();
item.secondIndex = ++counter;
System.Console.WriteLine(item);
return item.ToResult();
}
else {
item.firstValue = list.FirstOrDefault();
item.firstIndex = ++counter;
list.RemoveAt(0);
}
}

return item.ToResult();
}
}

public class Item
{
public int firstValue;
public int firstIndex;
public int secondValue;
public int secondIndex;

public int[] ToResult()
{
return new int[] { this.firstIndex, this.secondIndex };
}

public override String ToString()
{
return $"First Value - First Index: {this.firstValue} - {this.firstIndex} --- Second Value - Second Index : {this.secondValue} - {this.secondIndex}";
}
}

I usually use CodeWars to sharpen my programming skills but lately, I’m also been experimenting with LeetCode.

--

--

Abdallah Yashir

Senior Software Developer, Writer, Amateur Photographer, Reader