public int[] twoSum(int[] numbers, int target) {

        if (numbers == null || numbers.length == 0)
            return null;


        int[] result = new int[2];

        //Put all numbers in a map with indexes as values
        Map<Integer, Integer> allNumbers = new HashMap<Integer, Integer>();
        for (int i=0; i<numbers.length; i++) {
            allNumbers.put(numbers[i], i);
        }

        //Check diff against map
        for (int i=0; i<numbers.length; i++) {
            int diff = target - numbers[i];
            if (allNumbers.containsKey(diff) && allNumbers.get(diff) != i) {

                int first = i;
                int second = findIndex(numbers, diff, -1);

                if (first == second) {
                    int third =findIndex(numbers, diff, first);
                    second = third;
                }

                first = ++first;
                second = ++second;

                if (first < second) {
                    result[0] = first;
                    result[1] = second;
                } else {
                    result[0] = second;
                    result[1] = first;
                }
                break;
            }
        }


        return result;
    }