# An OOP Approach to Solving the Famous Two Sum Algorithmic Problem

## 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 = 9Output: [0,1]Explanation: Because nums + nums == 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.