Quelle est la complexité temporelle de HashMap.containsValue () dans java?

M'a donné un problème à résoudre en O(n) complexité temporelle :

"Donné une liste de nombres et x. Trouver si il y a tout les 2 numéros dans la liste qui s'ajoutent à x?"

Et c'est ma solution :

public class SumMatchResult {

  public static void main(String[] args){
    int[] numberList = {6,1,8,7,4,6};
    int requiredSum = 8;
    boolean isSumPresent = checkSumPresentHash(numberList,requiredSum);
    if(isSumPresent) {
      System.out.println("Numbers exist");
    }else {
      System.out.println("Numbers donot exist");
    }
  }

  private static boolean checkSumPresentHash(int[] numberList, int requiredSum) {
    Map<Integer, Integer> m = new HashMap<Integer,Integer>();
    int count = 0;
    for(int i=0;i<numberList.length;i++){
      m.put(i, numberList[i]);
    }
    for(int i=0;i<numberList.length;i++){
      if(m.containsValue(requiredSum - numberList[i])){
        count++;
      }
    }
    if(count>1){
        return true;
    }
    return false;
  }

}

Je suis en utilisant HashMap.containsValue() au lieu d'utiliser un HashSet.contains() qui a sûrement de la complexité de O(1) parce que, je compte pour le scénario où mon entrée peut contenir des valeurs identiques. Par exemple, dans le cas ci-dessus, je peux avoir un ensemble de valeurs d'entrée {3,6,4,4,7} être appariés pour l' sum 8qui doit retourner true.

Ma solution ci-dessus est l'heure de la complexité dépend de la complexité de HashMap.containsValue() méthode. S'il vous plaît faire la lumière sur la complexité du temps de containsValue() méthode et me suggère, si il y a une meilleure solution pour le problème ci-dessus en termes de temps de la complexité. Merci.

source d'informationauteur Vishnu Vedula