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

    Map<Integer, Integer> diffMap = new HashMap<Integer, Integer>();
    for (int i = 0 ; i < numbers.length ; i++) {
      diffMap.put(i, target - numbers[i]);
    }

    Set<Integer> diffSet = new HashSet<Integer>(diffMap.values());

    for (int i = 0 ; i < numbers.length ; i++) {
      // collection.contains() is O(N)
      if (diffSet.contains(numbers[i])) {
        for (Entry<Integer, Integer> entry : diffMap.entrySet()) {
          int key = entry.getKey();
          if (key != i && entry.getValue() == numbers[i]) {
            if (i < key) {
              return new int[] { i + 1, key + 1 };
            } else {
              return new int[] { key + 1, i + 1 };
            }
          }
        }
      }
    }

    return null;
  }